[Python-Dev] Pondering some changes to python.c...
Guido van Rossum
guido@python.org
Mon, 08 Apr 2002 17:46:24 -0400
> On Mon, Apr 08, 2002 at 04:51:57PM -0400, Guido van Rossum wrote:
> >When I run a Python script that has a #! directly, ps doesn't show me
> >the "python" part -- only the script name. This is in Linux (Red Hat
> >7.2). Maybe it's different for you?
[Sean]
> I was told at one point that "#!/usr/bin/env python" was the preferred
> she-bang incantation. However, calling it directly on my 7.2 box seems to
> show Python in either case:
>
> guin:tmp$ printf '#!/usr/bin/python\nimport time; time.sleep(5)' >testscript
> guin:tmp$ ./testscript & ps -awlx | grep testscript
> 000 500 8297 6741 10 0 2256 1192 do_sel S pts/0 0:00 /usr/bin/python ./testscript
> guin:tmp$ printf '#!/usr/bin/env python\nimport time; time.sleep(5)' >testscript
> guin:tmp$ ./testscript & ps -awlx | grep testscript
> 000 500 8300 6741 9 0 2256 1192 do_sel S pts/0 0:00 python ./testscript
Alas, yes. Default ps shows the script name, but ps -f does indeed
show the Python interpreter.
> >I'm not sure I understand. If you have the argc/argv/environ set, why
> >do you need to know &argc and &argv?
>
> On Linux and a few other systems, setting the ps string requires re-writing
> the block of memory starting at argv[0]. If the data in envp is
> allocated next to argv, you can also make use of that (so that you can
> write strings longer than "python testscript" in length).
>
> The typical way of doing this involves first making a copy of argv and envp
> for the process to continue using, because otherwise argv suddenly becomes
> something entirely different than what it originally was.
>
> So, we need to know &argv so that we can hand back the new location.
Sigh. The more I hear about this, the more I think, too ugly, this
doesn't belong in Python.
--Guido van Rossum (home page: http://www.python.org/~guido/)