[英]Error: segmentation fault core dumped
我正在学习操作系统。 当我测试此代码时,我遇到了这个问题-分段错误,核心转储。 如何解决这个问题呢?
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>
int main()
{
int p,*stat_addr;
while((p=fork())==-1);
if(p==0)
exit(0);
else
{
wait(stat_addr);
printf("%d\n",*stat_addr);
exit(0);
}
}
那是因为您尚未初始化stat_addr。 做类似的事情:
int stat_addr = 10;
然后像这样使用它:
wait(&stat_addr);
采用:
int status;
int corpse = wait(&status);
尸体是死孩子的PID(如果没有孩子,则为-1)。 除非corpse == -1
否则退出状态将编码为status
。
您崩溃,因为您有一个未初始化的指针。 我怀疑您对wait()
函数的原型感到困惑:
pid_t wait(int *stat_loc);
是的,它需要一个指针,但是它必须是一个初始化为指向某物的指针。 或者,更通常地,它是一个int
变量的地址,如我建议的用法中的&status
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.