程序
系統呼叫 getpid 可以得到程序的 id,而 getppid 可以得到父程序(建立呼叫該函式程序的程序)的 id.
#include ;pid_t getpid(void);
pid_t getppid(void);
struct passwd ;#include ;
#include ;
程序的建立
#include ;
pid_t fork();
當乙個程序呼叫了 fork 以後,系統會建立乙個子程序.這個子程序和父程序不同的地方只有他的程序 id 和父程序 id,其他的都是一樣.就象符程序轉殖(clone)自己一樣.
當然建立兩個一模一樣的程序是沒有意義的.為了區分父程序和子程序,我們必須跟蹤 fork 的返回值. 當 fork 掉用失敗的時候(記憶體不足或者是使用者的最大程序數已到)fork 返回-1,否則 fork 的返回值有重要的作用.對於父程序 fork 返回子程序的 id,而對於 fork 子程序返回 0.我們就是根據這個返回值來區分父子程序的. 父程序為什麼要建立子程序呢?前面我們已經說過了 linux 是乙個多使用者作業系統,在同一時間會有許多的使用者在爭奪系統的資源.有時程序為了早一點完成任務就建立子程序來爭奪資源. 一旦子程序被建立,父子程序一起從fork 處繼續執行,相互競爭系統的資源.有時候我們希望子程序繼續執行,而父程序阻塞直到子程序完成任務.這個時候我們可以呼叫 wait 或者 waitpid 系統呼叫.
#include ;#include ;
pid_t wait(int *stat_loc);
pid_t waitpid(pid_t pid,int *stat_loc,int options);
wait 系統呼叫會使父程序阻塞直到乙個子程序結束或者是父程序接受到了乙個訊號.如果沒有父程序沒有子程序或者他的子程序已經結束了 wait 回立即返回.成功時(因乙個子程序結束)wait 將返回子程序的 id,否則返回-1,
父程序建立子程序後,子程序一般要執行不同的程式.為了呼叫系統程式,我們可以使用系統呼叫 exec 族呼叫.exec 族呼叫有著 5 個函式.
#include ;
int execl(const char *path,const char *arg,...);
int execlp(const char *file,const char *arg,...);
int execle(const char *path,const char *arg,...);
int execv(const char *path,char *const argv);
int execvp(const char *file,char *const argv):
exec 族呼叫可以執行給定程式
如果在 linux 下編寫乙個"常駐記憶體"的程式卻是很容易的.我們只要幾行**就可以做到.
實際上由於 linux 是多工作業系統,我們就是不編寫**也可以把乙個程式放到後台去執行的.
我們只要在命令後面加上&符號 shell 就會把我們的程式放到後台去執行的.
後台程序的建立思想: 首先父程序建立乙個子程序.然後子程序殺死父程序 訊號處理所有的工作由子程序來處理.
1、呼叫fork函式,建立乙個子程序。
2、先讓父程序自然結束。
3、在子程序中呼叫setpgrp(),把子程序的程序組id設為子程序的程序id。
4、在子程序中呼叫setsid(),建立乙個新的session(會話),這樣子程序就與當前的控制終端脫離,也接受不到當前終端的(ctrl + c)訊息。
/** author: acb0y
* filename: main.cpp
* create time: 2011-07-24
* version: v1.0
*/#include
#include
using namespace std;
void print()
int main()
else if (0 == pid) //return from child process.
}else //return from parent process.
return 0;
}
linux C C 目錄操作
include int mkdir const char path name,mode t mode include int rmdir const char path name rmdir要求刪除的目錄為空目錄,當目錄非空時會操作失敗 include dir opendir const char ...
網路程式設計之 程序
首先博主在這裡先告訴大家博主學習的書籍是由 韓 韓聖雨 著 金國哲 譯 的 tcp ip網路程式設計,把網路變成寫的通俗易懂。那麼我們就開始吧!我們就能利用時鐘中斷讓各個程式來占用cpu的一部分從而完成併發 由於人的視覺間隔較大,所以在我們看來這就是一起執行的,但是在計算機內部不是這樣的,計算及內部...
併發程式設計之程序
在python中大部分情況需要使用多程序。python提供了multiprocessing。multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務 比如函式 該模組與多執行緒模組threading的程式設計介面類似。multiprocessing模組的功能眾多 支援子程序 ...