1. 程式人生 > 其它 >Linux下程序控制相關

Linux下程序控制相關

以下內容僅作為個人記錄的參考,但也歡迎讀者前來指正。

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的又是什麼程序呢。

不太清楚,可能就是單純被某個系統程序收養了吧。