Named pipe on demand kérdés

Tegnap megtaláltak egy érdekes kérdéssel, és az igazat megvallva, ennek a megválaszolásához túl gyenge a linux-fu-m. Gondoltam, fejtörő jelleggel felteszem:
Megoldható-e linux alatt igény szerinti named pipe létrehozása? Például, létre lehet-e hozni olyan fifo-t ami össze van kapcsolva egy alkalmazással, de az adott alkalmazást csak akkor futtatja, ha a fifot olvasásra megnyitják? Ötlet?

Hozzászólások

Valaminek "érzékelnie" kell, hogy a fifo-t megnyitották olvasásra. Ez máris egy "alkalmazás", aminek ugye folyamatosan futnia kell. Tehát: nem.

Ez a figyelő alkalmazás később elindíthatja a fifo-hoz kapcsolva a "valódi" alkalmazást, ami ugye eddig nem futott, most meg az igényre válaszul elindul. Tehát: igen.


UNIX Domain Sockets
     In addition to running services on IP sockets, inetd can also manage UNIX
     domain sockets.  To do this you specify a protocol of "unix" and specify
     the UNIX domain socket as the service-name.  The service-type may be
     "stream" or "dgram".  The specification of the socket must be an absolute
     path name, optionally prefixed by an owner and mode of the form
     :user:group:mode:.  The specification:

	   :news:daemon:220:/var/run/sock

     creates a socket owned by user "news" in group "daemon" with permissions
     allowing only that user and group to connect.  The default owner is the
     user that inetd is running as.  The default mode only allows the socket's
     owner to connect.

Mas a UNIX Domain Socket, es mas a named pipe.
Utobbi egy olyasmi pipe, mint amit 2 process kozt | jellel letrehozol, csak ennek kulon neve van (a filerendszerben jon letre). A socket ketiranyu, ez egyiranyu.
pl:
nyos@hex:~$ mknod akarmi p
nyos@hex:~$ la akarmi
prw-r--r-- 1 nyos 0 2012-03-10 14:00 akarmi|
nyos@hex:~$ echo ok >akarmi
masik terminalban:
nyos@hex:~$ cat akarmi
ok
(addig az echo is blokkolodott)

--
R2D2 a filmtörténet legmocskosabb szájú karaktere.
Minden szavát kisípolták.

Az egyik ötletem az volt, hogy periodikusan végigtúrni a /proc-ot a megnyitott fileok után, és ha valami megnyitja az adott fifot, akkor indítom a programot aminek a kimenete megy a fifoba. Ennél csak az a bökkenő, hogy a fifot megnyitó alkalmazásnak tudnia kell, hogy nem valós filet nyit meg, és várnia kell.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "