On Fri, Sep 05, 2008 at 07:57:54PM -0500, Monty J. Harder wrote:
On Fri, Sep 5, 2008 at 11:14 AM, Hal Duston hald@kc.rr.com wrote:
A process can change the arguments at any time w/o doing an exec. I have actually read the code that is needed to do this under Linux. It is less than 15 lines. All it does is rebuild the environment which is where the exec'ed command line arguments are kept. Once they are rebuilt ps, top, and everything else just pick them up from /proc/<pid>/cmdline.
Wow. I had no idea. Here I thought ps got that info from an internal kernel data structure that wasn't manipulable by userland. That suggests some really ugly possibilities.
Well, a process can only manipulate its own environment, so that's OK. It's basically the same thing bash does by doing HOME=/home/hald or any other environmental variable. The commandline is stored within the environment. All the program is doing is modifying the contents of argv[0] after making provision for the rest of the environment.
Thanks, -- Hal