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