#include<unistd.h>
#include<sys/types.h>
#include<errno.h>
#include<sys/wait.h>
#include<stdlib.h>
#include<stdio.h>
int main(){
pid_t childpid; /*variable to store the child's pid*/
int retval; /*user-provided return code for child process*/
int status; /*child's exit status for parent process*/
/*create new process*/
childpid = fork();
if (childpid >= 0) {
if (childpid == 0) {
printf("CHILD: I am the child process\n");
printf("CHILD: Here's my PID: %d\n",getpid());
printf("CHILD: My parent's PID is %d\n",getppid());
printf("CHILD: The value of fork return is %d\n",childpid);
printf("CHILD: Sleep for 1 second...\n");
sleep(1);
printf("CHILD: Enter an exit value (0~255): ");
scanf(" %d",&retval);
printf("Child: Goodbye! \n");
exit(retval); /*child exits with user-provided return code*/
}
else {
printf("PARENT: I am the parent process!\n");
printf("PARENT: Here's my PID: %d\n",getpid());
printf("PARENT: The value of my child's PID is %d\n", childpid);
printf("PARENT: I will now wait for my child to exit.\n");
wait(&status);
printf("PARENT: Child's exit code is %d\n",WEXITSTATUS(status));
printf("PARENT: Goodbye!\n");
exit(0);
}
}
else {
perror("fork error\n");
exit(0);
}
return 0;
}
实验3-1
于 2023-11-06 22:57:02 首次发布