- #include
- #include
- #include
- #include
- #include
- #include
-
- 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;
- }