我知道 fork 使用相同的代碼創建另一個行程,如果您在子行程中,則回傳 0;如果我們在父行程中,則回傳子行程的 pid,但是如果該子行程p1創建另一個子行程p2,是否會p1成為父行程?
#include<stdlib.h>
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
#include <errno.h>
#include <ctype.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(int argc,char** argv){
if(fork() == 0){
if(fork() == 0){
if(fork() == 0){
printf("Output");
}
}
}
else{
wait(NULL);
}
return 0;
}
所以如果那是正確的,結果應該是:Output?
為什么有時當我在 Linux 中啟動程式時我什么也得不到,有時我得到Output,是什么導致了這種不一致?
uj5u.com熱心網友回復:
是的,它就像一棵祖先之樹。
int main(int argc, char *argv[]) {
if (fork() == 0) {
printf("Child process: %d\n", getpid());
if (fork() == 0) {
printf("Grandchild process: %d\n", getpid());
if (fork() == 0) {
printf("Great grandchild process: %d\n", getpid());
}
}
} else {
printf("Parent process: %d\n", getpid());
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/532237.html
標籤:C过程
