|
楼主 |
发表于 2003-6-27 20:39:26
|
显示全部楼层
重写代码,并编译通过- /* testforks.c */
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #define NUM 4
- int main()
- {
- pid_t pid[NUM]={0},cpid;
- int i;
- pid[0]=getpid();//父进程
- for(i=1;i<NUM;i++)
- {
- if((cpid=fork())==-1)//子进程
- {
- printf("fork error!\n");
- exit(1);
- }
- else
- if(cpid==0)//如果是子进程,则跳出循环,父进程则继续循环,生成子进程
- {
- pid[i]=getpid();
- break;
- }
- }
- //所有进程都运行以下代码
- cpid=getpid();
- if(cpid==pid[0])
- {
- printf("parent cpid=%d\n",cpid);
- for(i=0;i<NUM;i++)
- printf("pa pid[%d]=%d\t",i,pid[i]);
- printf("\n");
- }
- if(cpid==pid[1])
- {
- printf("child 1# cpid=%d\n",cpid);
- for(i=0;i<NUM;i++)
- printf("1# pid[%d]=%d\t",i,pid[i]);
- printf("\n");
- }
- if(cpid==pid[2])
- {
- printf("child 2# cpid=%d\n",cpid);
- for(i=0;i<NUM;i++)
- printf("2# pid[%d]=%d\t",i,pid[i]);
- printf("\n");
- }
- if(cpid==pid[3])
- {
- printf("child 3# cpid=%d\n",cpid);
- for(i=0;i<NUM;i++)
- printf("3# pid[%d]=%d\t",i,pid[i]);
- printf("\n");
- }
- return 1;
- }
复制代码 |
|