Linux中使用c语言进行进程控制编程步骤:
- 使用vim编写c语言源代码
- 保存代码后编译代码 终端命令:gcc -o filename filename.c 或者 gcc filename -o filename.c
- 执行编译后的文件(注意编译时给可执行文件的命名,此处是filename),终端命令:./filename
- debug
fork()函数饭返回值的意义:
- -1:子进程分裂失败
- 0:子进程
- >0:父进程
写代码,使其符合如下的执行逻辑,并给出执行效果及分析。
主进程调用fork()产生子进程1
主进程调用fork()产生子进程2,子进程1产生孙进程
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void){
pc_t pc,pc2;
char *message;
int x;
pc = fork();
pc2 = fork();
if (pc < 0)
{ perror("fork failed");
exit(1);}
if (pc>0)
{ message = "This is the child\n";
x = 0; }
//主进程
if(pc>0&&pc2>0){
printf("===I am the main progress!===\n");
printf("My pc is %d ,I am the main progress\n",getpc());
sleep(3);
}
//子进程的主进程
if(pc==0&&pc2>0){
printf("===I am the son progress!===\n");
printf("My pc is %d,I am the first son pc,my father's pc is %d\n",getpc(),getppc());
sleep(3);
}
//主进程的子进程
if(pc>00&&pc2==0){
printf("===I am the son progress!===\n");
printf("My pc is %d,I am the second son pc,my father's pc is %d\n",getpc(),getppc());
}
//子进程的子进程
if(pc==0&&pc2==0){
printf("===I am the grandson progress!===\n");
printf("My pc is %d,I am the grandson pc,my father's pc is %d\n",getpc(),getppc());
}
return 0;
}