在Linux系统里,使用pid_t pid1; pid_t pid2; pid1=fork(); pid2=fork();if(pid1==0&&pid2==0) { p(semid_SP); v(semid_SG1); }以及pv操作实现盘子水果问题
时间: 2024-06-03 19:12:09 浏览: 162
&& pid2>0)这段代码的作用是什么?
这段代码的作用是创建两个子进程,其中pid1变量保存了第一个子进程的进程ID,pid2变量保存了第二个子进程的进程ID。如果pid1的值为0,而pid2的值大于0,那么说明当前进程是第一个子进程;如果pid1的值大于0,而pid2的值也大于0,那么说明当前进程是父进程;如果pid1和pid2的值都为0,则说明当前进程是第二个子进程。因此,通过判断pid1和pid2的值,可以判断当前进程所处的角色。
相关问题
int pid = fork();和pid_t pid;pid = fork(); 有什么区别
pid_t是一种数据类型,是专门用来存储进程号的变量类型。 int是C语言中一个常见的数据类型,用来表示整数。 在linux中,fork()函数返回的进程号类型是pid_t。 在使用fork()函数时,我们可以将返回的进程号存储在pid_t类型的变量中,也可以存储在int类型的变量中。 因此,int pid = fork();和pid_t pid; pid = fork(); 这两种方式都可以将fork()返回的进程号存储在pid变量中。 只是数据类型不同,对于存储的数据会有所不同,pid_t类型更加严格一些,它只能存储进程号,而int类型可以存储更大范围的整数值。
若一个程序中有这样的代码,则有几个进程,父子关系如何?pid_t pid1,pid2; pid1=fork(); pid2=fork();
如果一个程序中有这样的代码,则会创建3个进程。父进程会创建第一个子进程,第一个子进程会创建第二个子进程。父进程和第一个子进程之间是父子关系,第一个子进程和第二个子进程之间也是父子关系。但是第二个子进程与父进程之间的关系是兄弟关系。具体的进程树如下所示:
```
A
/ \
B C
/ \
D E
```
其中,A为父进程,B为第一个子进程,C为A的另一个子进程,D为C的子进程,E为C的另一个子进程。
阅读全文