繁体   English   中英

错误:分段故障核心已转储

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM