pipectl(1) General Commands Manual pipectl(1)

pipectl - ابزاری ساده برای مدیریت لوله‌های نام‌گذاری‌شده

pipectl [-h,-o,-i,-n N,-p P,-f,-l]

pipectl ابزاری برای ایجاد و مدیریت لوله‌های نام‌گذاری‌شده کوتاه‌مدت است که می‌توان از آن برای هدایت ورودی استاندارد (stdin) به یک برنامه بلندمدت‌تر از هر نقطه دیگری از سیستم بدون نیاز به سازوکارهای پیچیده IPC مانند UNIX domain sockets استفاده کرد.

pipectl برای استفاده به‌صورت جفتی در نظر گرفته شده است؛ یک فراخوانی pipectl لوله را باز می‌کند (-o) و آن را به یک فرایند متصل می‌سازد، و تمام فراخوانی‌های دیگر با همان نام یا مسیر، درون stdin آن فرایند می‌نویسند:

$ pipectl -o | daemon-process

$ echo "do-the-thing --color red"; | pipectl -i

$ echo "quit" | pipectl -i

فرایند دیمن هرگز با EOF روی stdin خود مواجه نخواهد شد. در عوض، pipectl تا زمان باز شدن یک لوله ورودی دیگر (-i) مسدود می‌شود و سپس stdin آن فرایند را به‌صورت ناهمگام به فرایند دیمن هدایت می‌کند.

هنگامی که فرایند دیمن خارج شود یا stdin خود را ببندد، pipectl به‌طور خودکار پاک‌سازی کرده و لوله نام‌گذاری‌شده ایجادشده را حذف می‌کند.

-h, --help

نمایش پیام راهنما و خروج.

-o, --out

ایجاد یک لوله نام‌گذاری‌شده و چاپ محتوای آن در stdout.

-i, --in

نوشتن stdin درون یک لوله نام‌گذاری‌شده باز که با -o ایجاد شده است.

-n N, --name N

ایجاد لوله نام‌گذاری‌شده با نام سفارشی. بخش مسیرها (PATHS) را ببینید.

-p P, --path P

ایجاد یک لوله نام‌گذاری‌شده در یک مسیر سفارشی. بخش مسیرها (PATHS) را ببینید.

-f, --force

جایگزینی اجباری لوله نام‌گذاری‌شده حتی اگر از قبل وجود داشته باشد (تنها با -o قابل استفاده است).

-l, --lock

استفاده از flock(2) برای همگام‌سازی عملیات نوشتن در لوله (تنها با -i قابل استفاده است).

به‌طور پیش‌فرض، pipectl لوله نام‌گذاری‌شده را در یک دایرکتوری موقت (TMP) ایجاد خواهد کرد. اولین دایرکتوری دردسترس از میان موارد زیر استفاده خواهد شد:

  • $XDG_RUNTIME_DIR
  • $TMPDIR
  • /tmp

مسیر نهایی لوله نام‌گذاری‌شده به شرح زیر است:

پیش‌فرض

TMP/pipectl.UID.pipe

با --name NAME

TMP/pipectl.UID.NAME.pipe

با --path PATH

PATH

که در آن UID شناسه کاربری واقعی فرایند pipectl است (به getuid(3) مراجعه کنید).

توسعه و نگهداری توسط Ferdinand Bachmann <ferdinand.bachmann@yrlf.at>. اطلاعات بیشتر پیرامون pipectl را می‌توانید در https://github.com/Ferdi265/pipectl بیابید.

pipectl(1) mkfifo(1) flock(2) getuid(3)

2024-10-13