[lkml]   [2003]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: Changing argv[0] under Linux.
On Tue, Jan 14, 2003 at 11:46:44PM -0500, Mark Mielke wrote:
> On Tue, Jan 14, 2003 at 03:11:41PM -0800, Bob Miller wrote:
> > On Tue, Jan 14, 2003 at 03:04:18PM -0800, Bob Miller wrote:
> > > Or you can copy your all your args and env to a temporary place and
> > > then re-build your args and env with the new argv[0] in it's place.
> > > But you must be carefull that your new argv[0] length plus the
> > > length of all remaining args, envp and pointers is not greater than
> > > the system defined size for this space.
> > In thinking about this more this will NOT work. The user stack starts
> > right after your envp. So, writing more info there would blow away
> > your stack.
> I can smell the next hack... memmove() the stack down to make room... :-)

No need. You can memcpy the environment. See setenv(3),
putenv(3) and related library routines.

Once you've parsed your argv who cares if you overwrite it,
put a double NULL at the end, set argc = 1 and argv[1] =
NULL. If argv[argc] - argv[0] + strlen(argv[argc] is
shorter than what you overwrite it with you won't even need
to relocate the environment block if you wish to preserve
that. Just don't leave any loose ends to confuse /proc and
the ps utils.

J.W. Schultz Pegasystems Technologies
email address:

Remember Cernan and Schmitt
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

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