lkml.org 
[lkml]   [2004]   [Aug]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: Program-invoking Symbolic Links?
Date
Please CC to jmc @ xisl.com

On Thursday 05 Aug 2004 15:34, William Stearns wrote:
> Good morning, John,
> (My apologies for floating offtopic for kernel programming. I
> wanted to provide a quick example for John and others interested in doing
> this so they could see this can be done outside of the kernel.)
>
> On Thu, 5 Aug 2004, John M Collins wrote:
> > (Please CC any reply to jmc AT xisl.com as I'm not subbed - thanks).
> >
> > I wondered if anyone had ever thought of implementing an alternative form
> > of symbolic link which was in fact an invocation of a program?
> >
> > Such a symbolic link would "do all the necessary" to fork off a new
> > process running the specified program with input or output from or to a
> > pipe depending on whether the link was opened for writing or reading
> > respectively. RW access would probably have to be banned and the link
> > would usually be read-only or write-only.
> >
> > What I originally wanted was symbolic links (with "=>" as a possible
> > notation).
> >
> > latest_version.tar => "tar cf - /latest/and/greatest"
> > latest_version.tgz => "gzip -c latest_version"
> >
> > and the like, which I could link on a website so I didn't have to run
> > around updating tar files/zip files/gzipped tar files etc each time I fix
> > a bug in some package.
>
> Is there any reason this couldn't be done in userspace by using
> named pipes instead of a new form of symlink?
>
> #!/bin/bash
>
> if [ ! -e livepipe ]; then
> echo Making livepipe >&2
> mkfifo livepipe
> fi
>
> while : ; do
> echo -n . >&2
> ( date ) >livepipe
> sleep 1
> done

That wouldn't do what I want. Besides which, I've tried it on Apache and it
doesn't work. Apache isn't fooled by fifos called something.html Nor are most
browsers either.

1. The "other end" of the named pipe would be run under the identity of
whoever kicked off that daemon process not the user who wanted to access it.

2. The environment etc would be that which the "other end" was kicked off
with, not what you might want it to be when the thing is accessed. In your
example the stuff up to the "(date) >livepipe" will all get run, and then
things will get suspended until there is a reader for "livepipe" by which
time all the work you've done up to that point might be invalidated.

3. There would be no way of getting at the invoking environment, supposing for
example you wanted to give a different response to different users?

4. In the example I quoted where you want to have a "give me a tarball of the
latest version of package X" link you'd have to have one continually-running
process to serve package X, one for package Y, one for package Z and so
forth.

--
John Collins Xi Software Ltd www.xisl.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:04    [W:0.073 / U:0.144 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site