📄 waitpid1.c
字号:
/***************// name : waitpid1.c// author : pyy// date : 2007-11-22************/#include<unistd.h>#include<stdio.h>#include<stdlib.h>#include<sys/wait.h>#include<sys/types.h>void disp0();void disp1();void disp2();int mymax(int ,int );int main(){ pid_t child; int status,ans; void (*fun[3])(); int (*pm)(int x, int y); int num1,num2,num3,max_num; fun[0] = disp0; fun[1] = disp1; fun[2] = disp2; pm = mymax; printf("copy ? yes or no: 1: yes 2: no "); scanf("%d", &ans); if (ans ==1 ) { child = fork(); //copy process if(child == -1) { perror("fork error"); exit(1); } } /* child process*/ if( child == 0) { puts("this is child process ... "); printf("\t child process pid = %d\n",getpid()); printf("\t child process ppid =%d\n",getppid()); printf("which one do you want? (0: computer 1 : tv 2 : video$)"); scanf("%d",&num3); if(num3 >=0 && num3<=2) (*fun[num3])(); exit(0); } else { waitpid(child,&status,0); puts("This is father process ...."); printf("\t father pid =%d \n",getpid()); printf("\t father ppid=%d \n",getppid()); printf("\t child go :%d\n",WIFEXITED(status)); printf("input first num: "); scanf("%d",&num1); printf("input second num: "); scanf("%d",&num2); max_num=(*pm)(num1,num2); printf("max is %d\n",max_num); exit(0); } }int mymax(int x, int y){ if(x > y) return x; else return y;}void disp0(){ printf(" you want computer.\n");}void disp1(){ printf(" you want TV.\n");}void disp2(){ printf(" you want video$.\n");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -