Arguments to exec* functions.

Michael Hudson mwh21 at cam.ac.uk
Mon Nov 13 15:35:19 EST 2000


cerutti at together.net (Neil Cerutti) writes:

> Michael Hudson posted:
> >cerutti at together.net (Neil Cerutti) writes:
> >
> >> Am I required to pass the name and path of the executable as the
> >> first item in the tuple or list of arguments to an exec*()
> >> function? I know some programs depend on the name of the
> >> executable for functional changes, e.g., gzip.
> >
> >On my system:
> >
> >$ ls --inode /bin/*zip
> >  30165 /bin/gunzip    30165 /bin/gzip
> >
> >i.e. "gzip" and "gunzup" actually are the same file, so the
> >executable needs some way to tell which is was invoked as -
> >hence argv[0].
> 
> Yes, I understand that. But why can't the os module extrapolate
> it for me, instead of forcing me to do it manually?
> 
> Fredrik Lundh says it follows the POSIX standard; that explains
> the semantics of argv, but it doesn't explain why the os module
> wraps it this way. Is it often useful to run a process and lie to
> it about its own name?

Not sure about "often", but try these:

>>> os.execl("/bin/bash","bash")
>>> os.execl("/bin/bash","-bash")

... but bascially it's because that's the way C does it, and that's
the general pattern for Python exposing C api's (and I personally
quite like it that way).

Cheers,
M.

-- 
  /* I'd just like to take this moment to point out that C has all
     the expressive power of two dixie cups and a string.
   */                       -- Jamie Zawinski from the xkeycaps source



More information about the Python-list mailing list