pipectl(1)

πŸ’– pipectl(1) β€” a simple named pipe management utility πŸ’–

okay bestie, welcome to pipectl, from the General Commands Manual. It's a cute lil tool that creates and manages short-lived named pipes πŸŽ€ so you can feed stdin into some long-running program from anywhere else on the system, without dragging a whole complex IPC thing like UNIX domain sockets into the situation. no cap. ✨


✨ SYNOPSIS ✨

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

🌸 DESCRIPTION 🌸

pipectl is literally the tool for making and managing short-lived named pipes that you can use to feed stdin to a longer-lived program from elsewhere in the system β€” and you don't need a complicated IPC mechanism like UNIX domain sockets to do it. it's giving effortless. πŸ’…

The way it works is that pipectl is meant to be used in pairs, bestie 🫢 β€” one call to pipectl opens the pipe (-o) and feeds it to a process, and all the other calls with the same name or path will write to the stdin of that process:

$ pipectl -o | daemon-process

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

$ echo "quit" | pipectl -i

The daemon process will never observe an EOF on its stdin. 😭 Instead, pipectl will block until another input pipe (-i) is opened, and will then feed the stdin of that process to the daemon process asynchronously. iconic behavior honestly.

When the daemon process exits or closes its stdin, pipectl will clean up and remove the created named pipe automatically. not me leaving zero mess behind πŸ’…βœ¨


πŸ‘‘ OPTIONS πŸ‘‘

  • -h, --help β€” show the help message and exit. bye bestie πŸ‘‹
  • -o, --out β€” create a named pipe and print its contents to stdout.
  • -i, --in β€” write stdin to an open named pipe created with -o.
  • -n N, --name N β€” create the named pipe with a custom name. check PATHS below πŸ‘‡
  • -p P, --path P β€” create a named pipe at a custom path. also check PATHS πŸ‘‡
  • -f, --force β€” force overwrite an existing named pipe even if it already exists (only usable with -o). 🩷
  • -l, --lock β€” use flock(2) to synchronize writes to the pipe (only usable with -i). πŸ”’

πŸ¦‹ PATHS πŸ¦‹

By default, pipectl will create the named pipe in a temporary directory (TMP). The first available directory out of these will be used:

  • $XDG_RUNTIME_DIR
  • $TMPDIR
  • /tmp

And the resulting path of the named pipe is as follows:

default

TMP/pipectl.UID.pipe

with --name NAME

TMP/pipectl.UID.NAME.pipe

with --path PATH

PATH

where UID is the real user id of the pipectl process (see getuid(3)). yes bestie, that's your real uid, main character energy fr fr πŸ’œ


πŸ’œ AUTHORS πŸ’œ

Maintained by Ferdinand Bachmann <ferdinand.bachmann@yrlf.at>. More information on pipectl can be found at <https://github.com/Ferdi265/pipectl>. 🫢


🌈 SEE ALSO 🌈

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


and that's a wrap, bestie!! πŸŽ€ this page is from 2026-01-27, serving the General Commands Manual β€” go forth and pipe slay πŸ’…βœ¨

πŸ“¦ where this page comes from