Why isn't argv[argc]==(char *)0 ?

Bjorn Engsig bengsig at oracle.nl
Thu Nov 16 03:23:27 AEST 1989


Sorry if this is discussed often - I don't normally read c.u.w.

The execv family of system calls all have  char *argv[]  as their second
parameter, and you are required to put an endmarker as  (char *)0  in it.
On the other hand, main has  int argc  and  char *argv[]  but here, the
endmarker has disappeared.  Has it ever been considered to change the defi-
nition of main such that it will always be true that  argv[argc] == (char *)0
or to change the execv's to use argc and not an endmarker.

Is it due to the fact that main() is a C-thing whereas exec() is a Unix thing,
and they therefore are incompatible?  If this is the case, why isn't there a
system() counterpart in the scope of C with the same parameters as main()?

It is probably much too late to change anything, but I would just like to 
know if this has ever been considered.
-- 
Bjorn Engsig,	Domain:		bengsig at oracle.nl,
		Path:		uunet!mcsun!orcenl!bengsig
		USA Domain:	bengsig at nlsun1.oracle.com



More information about the Comp.std.c mailing list