【发布时间】:2021-05-17 22:51:09
【问题描述】:
如何在父进程中打印子程序的退出状态? (等待()之后)
获取子进程退出状态的代码有效,但不知道之后如何打印
#include <stdio.h> // printf
#include <unistd.h> // getpid
#include <stdlib.h>
void childProcess(void);
void fatherProcess(int childpid);
int num1, num2, oper_inizializzata;
int main() {
int pid=fork();
if (pid==0) {
childProcess();
} else if (pid>0) {
fatherProcess(pid);
} else { // pid<0
printf("Creazione del processo figlio fallita!\n");
}
}
void childProcess(void)
{
printf("Inserisci il valore del primo numero\n");
scanf("%d",&num1);
printf("Inserisci il valore del secondo numero\n");
scanf("%d",&num2);
printf("Scegli tra 1 o 2 per il valore della variabile\n");
scanf("%d",&oper_inizializzata);
if(oper_inizializzata==1){
int num1piu2=num1+num2;
printf("num1 + num2 e' %d\n", num1piu2);
exit(num1piu2);
}
else if(oper_inizializzata==2){
int num1per2=num1*num2;
exit(num1per2);}
}
void fatherProcess(int childpid)
{
wait();
//print exit status here
}
【问题讨论】:
-
获取子进程退出状态的代码有效。我没有看到任何代码来获取子进程的退出状态。你能指出来吗?
-
@kaylum 这就是问题所在;它还没有。 OP 想知道在
fatherProcess中做什么来获得等待孩子的退出状态。 -
请阅读wait manual。它甚至有一个示例,可以完全按照要求进行操作。
-
@WhozCraig:问题说明“获取子进程退出状态的代码有效”,暗示 OP 确实有获取退出状态的代码,但由于它没有出现在问题中,他们没有向我们展示。
-
这能回答你的问题吗? Capturing exit status code of child process
标签: c unix operating-system system-calls