SYD-FD(1) General Commands Manual SYD-FD(1)

syd-fd - مدیریت توصیف‌کننده‌های فایل در جعبه‌شنی syd

syd-fd [-h] [-p pid] [-f remote_fd[:local_fd]]... {command [args...]}
syd-fd [-hw] -u socket [-m msg] [-f fd[,fd...]]...

ابزار syd-fd می‌تواند برای تعامل با توصیف‌کننده‌های فایل در سیستم‌های لینوکس مورد استفاده قرار گیرد. این ابزار در یکی از دو حالت زیر کار می‌کند: انتقال توصیف‌کننده‌های فایل راه دور با استفاده از pidfd_getfd(2)، یا ارسال توصیف‌کننده‌های فایل از طریق یک سوکت دامین یونیکس با SCM_RIGHTS.

در حالت نخست، در صورت تعیین تنها یک آرگومان PID با گزینه -p، فایل‌های باز فرایند با PID داده‌شده را در قالب JSON فشرده و خط‌محور فهرست می‌کند. اگر هیچ آرگومان PID مشخص نشود، فایل‌های باز فرایند جاری را فهرست می‌کند. می‌توان از آرگومان -f برای انتقال توصیف‌کننده‌های فایل راه دور با استفاده از pidfd_getfd(2) استفاده کرد که نیازمند لینوکس 5.6 یا بالاتر (Linux>=5.6) است. به عنوان یک امکان اختیاری، می‌توان یک توصیف‌کننده فایل محلی را پس از دونقطه به عنوان مقصد اضافه کرد. برای تکثیر توصیف‌کننده فایل در یک خانه تصادفی آزاد از توصیف‌کننده‌های فایل، عبارت "rand" را به عنوان مقصد مشخص کنید. اگر دستوری مشخص شده باشد، اجرا می‌شود و توصیف‌کننده‌های فایل به فرایند منتقل می‌شوند. در صورت عدم تعیین دستور، "/bin/sh" اجرا می‌شود.

در حالت دوم که با گزینه -u انتخاب می‌شود، به سوکت دامین یونیکس مشخص‌شده متصل شده و یک پیام تکی حاوی توصیف‌کننده‌های فایل ارائه‌شده با -f را به عنوان داده‌های کمکی SCM_RIGHTS از unix(7) ارسال می‌کند. وجود علامت @ در ابتدای آدرس سوکت نشان‌دهنده یک سوکت یونیکس انتزاعی (abstract) است. آرگومان‌های -f شماره‌های توصیف‌کننده فایل محلی هستند: فراخواننده باید آن‌ها را باز کند، برای نمونه با تغییر مسیرهای پوسته. خط پیام را می‌توان با -m مشخص کرد که به طور پیش‌فرض خالی است. هر دو گزینه -m و -f اختیاری هستند، بنابراین این حالت می‌تواند برای ارسال پیام‌های ساده بدون توصیف‌کننده فایل نیز استفاده شود. هرگونه محدودیت روی تعداد توصیف‌کننده‌ها در هر پیام تابع خط‌مشی دریافت‌کننده است: سوکت IPC در syd(2) دقیقاً یک توصیف‌کننده فایل پیکربندی را در هر پیام می‌پذیرد. به طور پیش‌فرض syd-fd بلافاصله پس از ارسال بدون انتظار برای پاسخ خارج می‌شود؛ با تعیین گزینه -w صرف‌نظر از آنچه ارسال شده منتظر دریافت پاسخ می‌ماند و آن را تا زمانی که طرف مقابل اتصال را ببندد در خروجی استاندارد چاپ می‌کند. بالاتر از همه، این حالت برای بارگذاری پیکربندی جعبه‌شنی از طریق سوکت IPC در syd(2) کاربرد دارد. یک توصیف‌کننده فایلِ دریافت‌شده، درخواست بارگذاری را تشکیل می‌دهد و پیام حامل آن باید تنها شامل دستور "load" باشد.

-h نمایش راهنما.
-p pid مشخص کردن شناسه فرایند (PID). در صورت عدم تعیین، توصیف‌کننده‌های فایل فرایند جاری را فهرست می‌کند.
-f remote_fd[:local_fd] مشخص کردن fd راه دور برای انتقال. می‌توان یک fd محلی مقصد را پس از دونقطه اضافه کرد، یا "rand" را برای مقصدی تصادفی به کار برد.
-u socket اتصال به سوکت دامین یونیکس و ارسال fdهای داده‌شده با SCM_RIGHTS. وجود @ در ابتدا نشان‌دهنده یک سوکت انتزاعی است. توصیف‌کننده‌های فایل برای ارسال با -f مشخص می‌شوند که می‌تواند تکرار شده یا با کاما جدا شود.
-m line مشخص کردن خط پیام برای ارسال با گزینه -u. اختیاری است و به طور پیش‌فرض خالی می‌باشد.
-w انتظار برای دریافت پاسخ هنگام استفاده از -u، صرف‌نظر از آنچه ارسال شده، و چاپ آن در خروجی استاندارد. به طور پیش‌فرض syd-fd بلافاصله پس از ارسال خارج می‌شود.

ابزار syd-fd با همان کد خروج دستور مشخص‌شده خارج می‌شود. با گزینه -u، در صورت موفقیت با کد 0 و در صورت شکست با شماره errno(3) مربوط به فراخوانی سیستمی شکست‌خورده خارج می‌شود.

بارگذاری پیکربندی جعبه‌شنی از طریق سوکت IPC در syd(2):

$ syd-fd -w -u @sandbox.sock -m load -f 3 3<paludis.syd-3
{"err":0,"msg":"ACK"}

syd(1), syd(2), syd(5), syd-lock(1), syd-pds(1), pidfd_getfd(1), unix(7)

وبگاه اصلی syd: https://sydbox.exherbo.org

توسعه و نگهداری توسط Ali Polatel. کدهای منبع به‌روز را می‌توانید در https://gitlab.exherbo.org/sydbox/sydbox.git و در Radicle در rad:z38HCnbmcDegA2BMxuPaPRPMdp6wF بیابید. گزارش‌های اشکال و وصله‌ها را می‌توان به https://gitlab.exherbo.org/groups/sydbox/-/issues ارسال کرد. گفتگو و تبادل نظر در کانال #sydbox در Libera Chat یا در #sydbox:mailstation.de در Matrix.

2026-09-01