Re: Changing argv[0] under Linux.

Mark Mielke (mark@mark.mielke.cc)
Tue, 14 Jan 2003 16:21:13 -0500


On Tue, Jan 14, 2003 at 03:28:23PM -0500, Richard B. Johnson wrote:
> On Tue, 14 Jan 2003, Mark Mielke wrote:
> > On Tue, Jan 14, 2003 at 02:56:35PM -0500, Richard B. Johnson wrote:
> > > Well I just grepped through usr/include/bits/posix1_lim.h and it
> > > shows 255 (with this 'C' library) so you are probably right.
> > > In any event, a "whole line of text" isn't going to overrun it.
> > Looking at the code, it looks to me as if argv[0] can be any size up to
> > _SC_ARG_MAX, with the restraining factor being that the environment
> > variables and the other arguments must fit in the same space.
> > Is this not correct?
> Don't think so. In my headers _SC_ARG_MAX is an enumerated type
> that is numerically equal to 0. It's in confname.h, the first
> element in the enumerated list.

_SC_ARG_MAX is one of the identifiers that are used with sysconf() to
lookup a system-wide configuration value:

$ perl -MPOSIX -e 'print sysconf(_SC_ARG_MAX), "\n"'
131072

The environment size for a program invoked using exec() can be up to
131072 bytes long (my configuration). This environment holds the
command arguments as well as the environment.

On my system, _SC_ARG_MAX is telling me that it is possible to have
argv[0] be just under 131072 bytes long.

mark

-- 
mark@mielke.cc/markm@ncf.ca/markm@nortelnetworks.com __________________________
.  .  _  ._  . .   .__    .  . ._. .__ .   . . .__  | Neighbourhood Coder
|\/| |_| |_| |/    |_     |\/|  |  |_  |   |/  |_   | 
|  | | | | \ | \   |__ .  |  | .|. |__ |__ | \ |__  | Ottawa, Ontario, Canada

One ring to rule them all, one ring to find them, one ring to bring them all and in the darkness bind them...

http://mark.mielke.cc/

- 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/