簡體   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