qfedu-linux-advanced-level/day2/homework/h7.c

38 lines
1.0 KiB
C

/*
编写一个程序,创建一个子进程,并在子进程中从键盘读取一个整数,然后在父进程中打印出子进程读取到的整数。
【提示】wait或waitpid 获取子进程返回的结果。
*/
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char const *argv[])
{
pid_t pid = fork(); // 创建子进程
if (pid < 0)
{
perror("fork");
return -1;
}
if (pid == 0) // 子进程
{
int i;
scanf("%d", &i); // 从键盘读取一个整数
return i; // 子进程返回读取到的整数
}
else // 父进程
{
int status;
waitpid(pid, &status, 0); // 等待子进程结束,并获取返回状态
if (WIFEXITED(status)) // 检查子进程是否正常退出
{
int child_i = WEXITSTATUS(status); // 获取子进程的返回值
printf("子进程读取到的数字为: %d\n", child_i);
}
}
return 0;
}