我自己手敲出来的,敲了好久。
p1的代码:
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<errno.h>
#include<sys/wait.h>
#include<stdlib.h>
int main(){pid_t childpid;int retval;int status;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);}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!");exit(0);}}
p2的代码:
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<errno.h>
#include<sys/wait.h>
#include<stdlib.h>
int main(){pid_t childpid;childpid = fork();if(childpid >= 0){if(childpid == 0){printf("CHILD: I am the child process! \n");sleep(1);execlp("/bin/ls","ls",NULL);}else{printf("PARENT: I am the parent process! \n");printf("PARENT: I will now wait for my child to exit.\n");wait(NULL);printf("PARENT: my child exit!\n");printf("PARENT: Goodbye!\n");}}else{perror("fork error!");}return 0;
}
不用感谢我,点个赞就行了。