我们编写的main函数,也是一个被调用的函数。像其他的小函数一样,只不过,main是被kernel的_start()函数调用。
调用main函数时候,_start()(还是exec()? 搞不清楚,_start()函数可能是exec()进程的分出来的子进程。)函数也要传递参数给main()。传递三个参数:命令行参数的个数,命令行每个字符串的指针,环境变量。
int main (int argc, char *argv[]);
第三个,环境变量,在main()函数的声明中的参数部分并没有,但是有一个库文件中,包含了一个指针数组地址的全局变量,名字叫environ; 如果你写的main函数,想要用到这个变量,那么需要在自己的 .c文件中extern 一下这个变量extern char **environ,表明这个变量不是本文件中的,是别的文件中的。这样就可以使用这个变量了。
可以把下面的代码编译后运行一下,看看打印出了哪些环境变量:
#include "apue.h"
int main(int argc,char *argv[])
{
int i;
externchar **environ;
for (i=0; environ[i]!=NULL; i++)
{
printf("环境变量【%d】%s\n",i+1,environ[i]);
}
printf("环境变量的个数为:%d\n",i);
return(0);
}
~