38 lines
1.0 KiB
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;
|
|
}
|