题目是这样的:一个进程产生三个子进程,并传递不同的参数,让他们分别执行别的程序:
解释如下:一个父进程产生三个子进程,可以有很多方法,但是必须要保证是同一父进程。具体代码如下:
- #include <stdio.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <string.h>
-
- int main(int argc,char * argv[],char ** environ)
- {
- int i;
- pid_t pid1,pid2,pid3;
- int stat_val;
- for(i=1;i<4;i++)
- {
- if(strcmp("a",argv[i])==0)
- {
- pid1=fork();
- if(pid1==0)
- {
- printf("My pid = %d ,parentpid = %d\n",getpid(),getppid());
- execve("cheng",argv,environ);// 让进程去执行新的程序。
- return 0;
- }
- }
- if(strcmp("b",argv[i])==0)
- {
- pid2=fork();
- if(pid2==0)
- {
- printf("My pid = %d ,parentpid = %d\n",getpid(),getppid());
- execve("jiecheng",argv,environ);
- return 0;
- }
- }
- if(strcmp("c",argv[i])==0)
- {
- pid3=fork();
- if(pid3==0)
- {
- printf("My pid = %d ,parentpid = %d\n",getpid(),getppid());
- execve("kou",argv,environ);
- return 0;
- }
- }
- }
- for(i=0;i<10000000;i++);
- wait(&stat_val);
- return 0;
- }
cheng.c的源码如下:
- #include <stdio.h>
- #include <sys/types.h>
- #include <unistd.h>
-
- int main(int argc,char *argv[],char **environ)//注意参数
- {
- printf("123\n");
-
- }
jiecheng.c和kou.c类似。
编译过程如下:
- lwp@lwp-linux:~/linux/bianchengshizhan/_7_$ gcc -o cheng cheng.c
- lwp@lwp-linux:~/linux/bianchengshizhan/_7_$ gcc -o jiecheng jiecheng.c
- lwp@lwp-linux:~/linux/bianchengshizhan/_7_$ gcc -o kou kou.c
- lwp@lwp-linux:~/linux/bianchengshizhan/_7_$ gcc -o test22 test22.c
- lwp@lwp-linux:~/linux/bianchengshizhan/_7_$ ./test22 a b c
- My pid = 3114 ,parentpid = 3113
- My pid = 3115 ,parentpid = 3113
- My pid = 3116 ,parentpid = 3113
- liwenping
- 123
- 98
阅读(3177) | 评论(1) | 转发(3) |