Messages in this thread | | | Date | Wed, 15 Jan 2003 00:25:27 -0800 | From | jw schultz <> | Subject | Re: 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: jw@pegasys.ws
Remember Cernan and Schmitt - 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/
| |