【发布时间】:2020-10-04 07:59:18
【问题描述】:
我正在 Ubuntu 中编写一个 shell,我正在使用以下函数将环境变量输出给用户。
extern char **environ;
void showEnv()
{
while (*environ != NULL)
printf("%s\n",*environ++);
}
但是,当调用该函数时,环境变量都显示正确,但显示错误“Segmentation fault (core dumped)”并终止进程。
有人可以解释我做错了什么吗?提前谢谢!
【问题讨论】:
-
您的
environ字符串不能以 NULL 结尾。这永远不会触发 while 循环的停止条件,会导致 sigsegv 错误。
标签: c linux shell ubuntu environment-variables