編寫兩個不同的可執行程式,名稱分別為a和b,b為a的子程序。
在a程式中呼叫open函式開啟a.txt檔案。
在b程式不可以呼叫open或者fopen,只允許呼叫read函式來實現讀取a.txt檔案。
(a程式中可以使用 fork與execve函式建立子程序)。
a.c//fork函式 父子程序 共享(複製)檔案描述符
#include #include #include #include #include #include int main(int argc,char * argv)
printf("the process pid=%d\n",getpid());
fd = open(argv[1],o_rdonly,0);
if(fd < 0)
pid = fork();
if(pid < 0)
else if(0 == pid)
}else
printf("close file over\n");
printf("wait for child process over\n");
pid = waitpid(pid,null,0);
printf("child process pid =%d over\n",pid);
}}b.c
#include #include #include #include int main(int argc, char* argv)
printf("now is in b process\n");
for(i = 0;ifd = atoi(argv[1]);
if(fd < 3)
dowhile(readnum == sizeof(buf));
printf("\n");
}
fork 函式和linux程序號
pid t 型別 定義程序號型別 實際型別 我們可找到其定義 1 在centos6.5的 usr include sys type.h中可找到其定義 總結 pid t 就是 int 型 2 fork 函式建立子程序 需要的標頭檔案 include和 include 功能 從乙個已經存在的程序中建立新...
LINUX下fork 和kill函式
1 fork 函式 pid t fork void 返回值 fork僅僅被呼叫一次,卻能夠返回兩次,它可能有三種不同的返回值 1 在父程序中,fork返回新建立子程序的程序id 2 在子程序中,fork返回0 3 如果出現錯誤,fork返回乙個負值 在fork函式執行完畢後,如果建立新程序成功,則出...
Linux下的fork 函式
fork fork的英文翻譯是 分叉 同樣在linux中我們也可以理解為如果使用了fork 函式,程序也會 分叉 下面進行具體的說明fork 函式。定義 通過系統呼叫建立乙個與原程序幾乎完全相同的程序,其中新產生的程序成為子程序。原型 pid t fork void fid t相當於int型別特殊之...