如何解决fgets始终返回一个非空指针
我正在学习有关Linux中的过程控制的知识,并且在使用函数fgets()
时遇到了问题。我试图简化代码,如下所示:
#define BUF 50
char cmd_raw[BUF];
void tmp();
int main()
{
FILE *fp;
fp = fopen("./test.sh","r");
while(fgets(cmd_raw,BUF,fp)!=NULL)
{
tmp();
printf("%s\n",cmd_raw);
}
}
void tmp()
{
pid_t fork_result;
fork_result = fork();
if (fork_result == -1)
return;
else if (fork_result == 0)
{
exit(0);
}
else
{
int stat_val;
waitpid(fork_result,&stat_val,0);
}
}
文件./test.sh
可以是包含三行以上的任何文件,例如:
echo aaa
echo bbb
echo ccc
执行上述代码时,语句fgets(cmd_raw,fp)!=NULL
始终为true,结果程序无休止地循环。据我了解,子流程一旦创建便立即退出,因此尽管代码本身也是分叉的,但不应在子流程中访问while循环。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。