Linux下程序控制相關
阿新 • • 發佈:2021-10-02
以下內容僅作為個人記錄的參考,但也歡迎讀者前來指正。
fork()
#include<sys/types.h> #include<unistd.h> pid_t fork(void) 返回: -1:出錯。 0:子程序 否則為父程序。
#include<stdio.h> #include<sys/types.h> #include<unistd.h> int main() { pid_t result; result = fork(); if(result==-1) { printf("fork出錯\n"); return 0; } else if(result==0) { printf("this is child process. pid = %d\n.",getpid()); printf("my father's pid = %d\n",getppid()); } else { printf("this is parent process.pid = %d\n.",getpid()); } return 0; }
為什麼父程序的id不是25905呢,有點奇怪。
這就是不正常的情況,父程序pid變了,說明原來的父親沒了。沒了,在這裡看來只能是執行結束了。
所以延長一下父程序的程序時間。
#include<stdio.h> #include<sys/types.h> #include<unistd.h> int main() { pid_t result; result = fork(); if(result==-1) { printf("fork出錯\n"); return 0; } else if(result==0) { printf("this is child process. pid = %d\n.",getpid()); printf("my father's pid = %d\n",getppid()); printf("add a line to print.\n"); } else { printf("this is parent process.pid = %d\n.",getpid()); printf("the result is %d\n",result); printf("add a line to print.\n"); printf("add a line to print1.\n"); getchar();//阻塞輸出 } return 0; }
果然,父程序結束太快,所以兒子被別人收養了。
那麼,剛才pid為1的又是什麼程序呢。
不太清楚,可能就是單純被某個系統程序收養了吧。