感謝偉大的反應。知道了。
我的實際代碼:
#include <stdio.h>
#include <stdlib.h>
int main(void){
int pid;
int pid2;
int st;
int st2;
if((pid = fork()) == 0) {
printf ("Kind: %d\n",getpid());
if ((pid2 = fork()) == 0) {
printf("Kindes Kind process: %d\n",getpid());
} else {
wait(&st2);
}
} else {
printf("Ich warte auf meinen Sohn\n"); //WAITING FOR MY SON
wait(&st);
printf("mein Sohn ist fertig\n"); // MY SON IS RDY
printf ("Vater process: %d\n", getpid());
printf("Vater: Status = %d\n",st); //MY STATUS AS A FATHER
}
return 0;
}
我的結果:
Ich warte auf meinen Sohn //waiting for my son
Kind: 2175 //pid children
Kindes Kind process: 2176 // childrens child pid
mein Sohn ist fertig //my son finished
Vater process: 2174 //father pid
Vater: Status = 0 //father status
我唯一的問題是,第一個孩子的PID打印出第一。 我想要孩子等待自己的孩子,並打印出他自己的孩子。
像:
waiting for my Son(2)
pidchild2
my son2 finished
status
waiting for my son
pidchild1
my son1 finished
father pid
status
編輯:
得到了它,我認爲
剛剛給printf超越WAIT2。很明顯
#include <stdio.h>
#include <stdlib.h>
int main(void){
int pid;
int pid2;
int st;
int st2;
if((pid = fork()) == 0) {
if ((pid2 = fork()) == 0) {
printf("Kindes Kind process: %d\n",getpid());
} else {
printf("Ich warte auf meinen Sohn1\n");
wait(&st2);
printf("mein Sohn ist fertig2\n"); // MY SON IS RDY
printf ("Kind: %d\n",getpid());
printf("Sohn1: Status = %d\n",st2); //MY STATUS AS A FATHER
}
} else {
printf("Ich warte auf meinen Sohn\n"); //WAITING FOR MY SON
wait(&st);
printf("mein Sohn ist fertig\n"); // MY SON IS RDY
printf ("Vater process: %d\n", getpid());
printf("Vater: Status = %d\n",st); //MY STATUS AS A FATHER
}
return 0;
}
進程是性別中立的。 '叉子'創造一個「孩子」,而不是「兒子」。 –