Is char *envp[] as a third argument to main() portable

The function getenv is the only one specified by the C standard. The function putenv, and the extern environ are POSIX-specific.

EDIT

The main parameter envp is not specified by POSIX but is widely supported.

An alternative method of accessing the environment list is to declare
a third argument to the main() function:

int main(int argc, char *argv[], char *envp[])

This argument can then be treated in the same way as environ, with the
difference that its scope is local to main(). Although this feature is
widely implemented on UNIX systems, its use should be avoided since,
in addition to the scope limitation, it is not specified in SUSv3.

Leave a Comment