青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

pipe、dup、dup2、wait、waitpid、fork函數說明

pipe、dup、dup2、wait、waitpid、fork函數說明
int pipe(int fd[2]);
功能:創建一個簡單的管道,若成功則為數組fd分配兩個文件描述符,其中fd[
0] 用于讀取管道,fd[1]用于寫入管道。
返回:成功返回0,失敗返回
-1

管道是Linux 支持的最初Unix IPC形式之一,具有以下特點:
管道是半雙工的,數據只能向一個方向流動;需要雙方通信時,需要建立起兩個管道; 只能用于父子進程或者兄弟進程之間(具有親緣關系的進程); 單獨構成一種獨立的文件系統:管道對于管道兩端的進程而言,就是一個文件,但它不是普通的文件,它不屬于某種文件系統,而是自立門戶,單獨構成一種文件系 統,并且只存在與內存中。 數據的讀出和寫入:一個進程向管道中寫的內容被管道另一端的進程讀出。寫入的內容每次都添加在管道緩沖區的末尾,并且每次都是從緩沖區的頭部讀出數據。

但值得我們注意的是:管道它有自身的特點。
 (
1)管道通信是單向的,并且遵守先進先出的原則,即先寫入的數據先讀出。
 (
2)管道是一個無結構,無固定大小的字節流。
 (
3)兩個返回的文件描述符以一種特殊的方式連接起來.寫到fd[1]的數據都可以從fd[0]中讀回來.

向管道中寫入數據時,linux將不保證寫入的原子性,管道緩沖區一有空閑區域,寫進程就會試圖向管道寫入數據。如果讀進程不讀走管道緩沖區中的數據,那么寫操作將一直阻塞。


int dup(int fd) 
復制一個存在的文件描述符,返回當前可用的最小文件描述符。。。比如當前文件描述符已經到了100,使用 dup(
100) ,將返回 101 ,101這個文件描述符擁有100的所有東西,復制了嘛。。。

int dup2(int fd, int fd2)
是可以指定一個文件描述符(fd2)來使用,如果fd2已經打開,則會先將其關閉,如果 fd
==fd2 ,直接返回 fd2 且不關閉。
實際上 fcntl 也能完成這2個函數的功能,只是對于 dup2 來說,fcntl 是調用2個函數,而 dup2 是一個原子操作。


dup函數的作用:復制一個現有的句柄,產生一個與“源句柄特性”完全一樣的新句柄(也即生成一個新的句柄號,并關聯到同一個設備)

dup2函數的作用:復制一個現有的句柄到另一個句柄上,目標句柄的特性與“源句柄特性”完全一樣(也即首先關閉目標句柄,與設備斷連,接著從源句柄完全拷貝復制到目標句柄)


wait和waitpid函數
頭文件
#include
<sys/types.h>
#include
<sys/wait.h>
函數 pid_t wait (
int * status);
進程一旦調用了 wait,就 立即阻塞自己,由wait自動分析是否當前進程的某個子進程已經退出,如果讓它找到了這樣一個已經變成僵尸的子進程,wait 就會收集這個子進程的信息, 并把它徹底銷毀后返回;如果沒有找到這樣一個子進程,wait就會一直阻塞在這里,直到有一個出現為止。 
wait(等待子進程中斷或結束)

wait()會暫時停止目前進程的執行,直到有信號來到或子進程結束。如果在調用wait()時子進程已經結束,則wait()會立即返回子進程結束狀態值。子進程的結束狀態值會由參數status 返回,而子進程的進程識別碼也會一快返回。如果不在意結束狀態值,則參數status 可以設成NULL。子進程的結束狀態值請參考waitpid()。
返回值
如果執行成功則返回子進程識別碼(PID),如果有錯誤發生則返回
-1。失敗原因存于errno 中。


waitpid(等待子進程中斷或結束)
相關函數 wait,fork
表頭文件
#include
<sys/types.h>
#include
<sys/wait.h>
定義函數 pid_t waitpid(pid_t pid,
int * status,int options);
函數說明
waitpid()會暫時停止目前進程的執行,直到有信號來到或子進程結束。如果在調用waitpid()時子進程已經結束,則waitpid()會立即返回子進程結束狀態值。子進程的結束狀態值會由參數status 返回,而子進程的進程識別碼也會一快返回。如果不在意結束狀態值,則參數status 可以設成NULL。

參數pid 為欲等待的子進程識別碼,其他數值意義如下:
pid
<-1 等待進程組識別碼為pid 絕對值的任何子進程。
pid
=-1 等待任何子進程,相當于wait()。
pid
=0 等待進程組識別碼與目前進程相同的任何子進程。
pid
>0 等待任何子進程識別碼為pid 的子進程。


目前在Linux中只支持WNOHANG和WUNTRACED兩個選項,
WNOHANG 如果沒有任何已經結束的子進程則馬上返回,不予以等待。
WUNTRACED 如果子進程進入暫停執行情況則馬上返回,但結束狀態不予以理會。

如果我們不想使用它們,也可以把options設為0,如:
ret
=waitpid(-1,NULL,0);

如果使用了WNOHANG參數調用waitpid,即使沒有子進程退出,它也會立即返回,不會像wait那樣永遠等下去。

而WUNTRACED參數,用于跟蹤調試,極少用到,就不說了。
查看linux源代碼 unistd.h 我們會發現,其實 wait 就是經過包裝的 waitpid:
static inline pid_t wait(int * wait_stat)
{
    
return waitpid(-1,wait_stat,0);
}

可以用kill函數殺死子進程
kill(childPid,SIGKILL);


子進程的結束狀態返回后存于status,下面有幾個宏可判別結束情況:
WIFEXITED(status)如果子進程正常結束則為非0值。
WEXITSTATUS(status)取得子進程exit()返回的結束代碼,一般會先用WIFEXITED 來判斷是否正常結束才能使用此宏。
WIFSIGNALED(status)如果子進程是因為信號而結束則此宏值為真
WTERMSIG(status) 取得子進程因信號而中止的信號代碼,一般會先用WIFSIGNALED 來判斷后才使用此宏。
WIFSTOPPED(status) 如果子進程處于暫停執行情況則此宏值為真。一般只有使用WUNTRACED 時才會有此情況。
WSTOPSIG(status) 取得引發子進程暫停的信號代碼,一般會先用WIFSTOPPED 來判斷后才使用此宏。

if (WIFEXITED(status)) 
{
    printf(
"exited, status=%d/n", WEXITSTATUS(status));

else if (WIFSIGNALED(status)) {
    printf(
"killed by signal %d/n", WTERMSIG(status));

else if (WIFSTOPPED(status)) {
    printf(
"stopped by signal %d/n", WSTOPSIG(status));

else if (WIFCONTINUED(status)) {
    printf(
"continued/n");
}

返回值
如果執行成功則返回子進程識別碼(PID),如果有錯誤發生則返回
-1。失敗原因存于errno 中。


fork函數
Create a 
new process

程序段里用了fork();之后程序出了分岔,派生出了兩個進程。具體哪個先運行就看該操作的系統的調度算法了。
函數返回2次.
返回值得在子進程中pid的值為0,通過getpid可以獲取子進程的進程id;

返回值:
A value of zero to the child process; and the process ID of the child process to the parent process. 
Both processes 
continue to execute from the fork() function. If an error occurs, fork() returns -1 to the parent and sets errno.

#include 
<sys/types.h>
#include 
<process.h>
int main() 
{
    pid_t pid; 

    puts(
"<1>");
    pid
=fork(); 
    
if (pid < 0) {
        printf(
"error in fork! \r\n"); 
    }
    
else if (pid == 0) {
        printf(
"i am the child process, my process id is %d \r\n",getpid()); 
    }
    
else {
        printf(
"i am the parent process, my process id is %d \r\n",getpid()); 
    }

    puts(
"<2>");
    
return 0;
}

posted on 2012-08-09 14:36 天下 閱讀(2401) 評論(0)  編輯 收藏 引用 所屬分類: Linux編程

<2011年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

導航

統計

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            玖玖视频精品| 亚洲二区免费| 国产视频一区欧美| 欧美午夜a级限制福利片| 欧美大片91| 欧美理论电影在线播放| 欧美精品97| 欧美色网一区二区| 国产精品久久久久久亚洲调教| 欧美日韩精品一区二区三区| 欧美啪啪成人vr| 欧美三级在线播放| 国产精品综合色区在线观看| 韩国女主播一区| 亚洲国产专区校园欧美| 在线一区二区三区四区五区| 亚洲欧美偷拍卡通变态| 美女网站在线免费欧美精品| 亚洲精品一区在线观看| 欧美一区三区二区在线观看| 免费一级欧美片在线播放| 欧美午夜理伦三级在线观看| 国内精品视频在线播放| 91久久午夜| 欧美在线视频观看| 亚洲精品国产精品乱码不99 | 亚洲一二三级电影| 欧美在线首页| 欧美黄色影院| 国产欧美日韩激情| 亚洲国产日韩欧美| 香蕉久久a毛片| 欧美成人高清| 亚洲一区二区三区777| 久久久www免费人成黑人精品| 欧美大色视频| 欧美在线视频观看| 欧美日韩一区二区三| 国产精品羞羞答答| 极品中文字幕一区| 99re6这里只有精品| 欧美一级淫片播放口| 欧美18av| 亚洲一区在线免费观看| 中文在线一区| 日韩视频第一页| 亚洲性图久久| 久久精品综合网| 欧美日韩一区二区三区在线观看免 | 麻豆乱码国产一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲美女精品成人在线视频| 欧美亚洲免费在线| 欧美另类极品videosbest最新版本 | 久久亚洲不卡| 亚洲精品综合久久中文字幕| 久久国产日韩| 国产精品三级久久久久久电影| 伊人成年综合电影网| 亚洲宅男天堂在线观看无病毒| 久久久精品国产免大香伊| 夜夜嗨av一区二区三区中文字幕 | 国产日韩一区欧美| 一本大道久久a久久精品综合| 亚洲影院在线观看| 久久精品一级爱片| 亚洲美女在线观看| 欧美1区2区| 狠狠色噜噜狠狠色综合久| 亚洲人人精品| 国产一区二区三区黄视频| 亚洲美女在线国产| 久久尤物视频| 亚洲男人av电影| 欧美日韩综合视频| 9久草视频在线视频精品| 欧美成人69| 久久午夜精品| 欧美性色综合| 一本久道久久综合婷婷鲸鱼| 欧美国产专区| 蜜桃伊人久久| 亚洲欧洲一区二区三区| 欧美成人精品福利| 亚洲香蕉视频| 欧美午夜一区二区| 亚洲尤物精选| 亚洲专区免费| 国产婷婷成人久久av免费高清 | 久久精品视频免费| 黄色日韩精品| 欧美成人a∨高清免费观看| 久久久青草婷婷精品综合日韩 | 亚洲国产日韩欧美在线动漫| 欧美电影免费网站| 欧美精品成人| 亚洲欧洲日本mm| 欧美黄色一区二区| 欧美激情一区在线| 亚洲影音先锋| 午夜在线精品| 在线观看三级视频欧美| 亚洲高清电影| 欧美午夜大胆人体| 久久国产一区二区三区| 久久精品官网| 日韩性生活视频| 亚洲一区二区三区在线观看视频| 国产精品夜色7777狼人| 久久精品99国产精品日本 | 欧美日韩国产专区| 午夜亚洲福利| 久热精品视频| 亚洲一区二区少妇| 久久精品一本久久99精品| 亚洲精品乱码久久久久久日本蜜臀| 久久人人97超碰国产公开结果| 久久美女性网| 一区二区在线视频| 欧美激情91| 国产精品视频男人的天堂| 久久亚洲高清| 欧美日韩亚洲一区二区三区在线观看 | 欧美波霸影院| 欧美另类在线观看| 亚洲男女自偷自拍| 午夜激情亚洲| 日韩亚洲欧美高清| 欧美在线|欧美| 亚洲一级高清| 亚洲免费在线观看| 91久久在线视频| 欧美一区二区日韩一区二区| 亚洲精品午夜精品| 久久av一区| 亚洲视频在线二区| 巨乳诱惑日韩免费av| 欧美一级久久| 欧美午夜精品理论片a级按摩 | 黄色精品一区二区| 亚洲午夜视频| 国产伊人精品| 亚洲黄色三级| 狠狠色丁香婷婷综合影院| 一本色道久久综合亚洲精品小说 | 久久久久久一区二区三区| 亚洲欧美经典视频| 欧美日本免费| 亚洲国产成人午夜在线一区| 国内外成人在线| 一本久久综合亚洲鲁鲁五月天| 国产精品嫩草久久久久| 欧美在线视频一区二区三区| 欧美电影在线观看| 国产精品黄色| 日韩视频免费观看高清在线视频| 亚洲国产成人在线| 久久五月婷婷丁香社区| 久久综合九色综合欧美就去吻| 国产精品视频久久一区| 亚洲天堂av图片| 欧美一站二站| 国产伪娘ts一区| 欧美一区亚洲二区| 久久亚洲精品一区二区| 狠狠狠色丁香婷婷综合激情| 欧美中文字幕视频| 亚洲天堂免费观看| 亚洲在线一区二区三区| 欧美一区午夜精品| 国产日韩欧美亚洲一区| 小辣椒精品导航| 久久精品最新地址| 狠狠干成人综合网| 久热re这里精品视频在线6| 欧美成人精品在线视频| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲福利视频二区| 免费精品99久久国产综合精品| 欧美成人首页| 一区二区三区国产| 国产精品永久免费观看| 欧美在线免费一级片| 欧美大香线蕉线伊人久久国产精品| 亚洲国产精品久久久久秋霞影院| 你懂的国产精品| 亚洲免费观看高清完整版在线观看| 一二三四社区欧美黄| 国产精品推荐精品| 久久精品成人| 亚洲国产精品久久精品怡红院| 99精品黄色片免费大全| 国产精品久久久久秋霞鲁丝| 欧美一区二区日韩| 亚洲黄色大片| 欧美一级视频一区二区| 1024国产精品| 欧美三级电影大全| 欧美在线日韩在线| 久久一二三四|