日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Linux多任务编程之五:exit()和_exit()函数(转)

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux多任务编程之五:exit()和_exit()函数(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源:CSDN? 作者:王文松?? 轉自:Linux公社

------------------------------------------------------------------------------------------------------------------------------------------------

wait()和waitpid()

函數說明

wait()函數用于使父進程(也就是調用wait()的進程)阻塞,直到一個子進程結束或者該進程接收到了一個指定的信號為止。如果該父進程沒有子進程或者它的子進程已經結束,則wait()函數就會立即返回。

waitpid()的作用和wait()一樣,但它并不一定要等待第一個終止的子進程(它 可以指定需要等待終止的子進程),它還有若干選項,如可提供一個非阻塞版本的 wait()功能,也能支持作業控制。實際上,wait()函數只是 waitpid()函數的一個特例,在Linux 內部實現 wait()函數時直接調用的就是waitpid()函數。

函數格式

下圖為wait()函數的格式

下圖為waitpid()函數的格式

?

基礎實驗

實驗1

本實驗中首先使用fork()創建一個子進程,然后讓其子進程暫停5s(使用了sleep()函數)。接下來對原有的父進程使用waitpid() 函數,并使用參數WNOHANG是該父進程不會阻塞。若有子進程退出,則waitpid()返回子進程號;若沒有子進程退出,則waitpid()返回 0,并且父進程每隔1s循環判斷一次。該程序的流程圖如下:

程序源代碼我上傳到網站,可以免費下載waitpid.c文件,點此下載

下載文件后,使用命令:gcc waitpid.c -o waitpid

然后執行命令:./waitpid 結果如下圖;

從輸出結果就可以看出程序的執行流程。先執行一次父進程,父進程睡眠1s,此時執行子進程,然后子進程睡眠5秒;接著再執行父進程監聽。哎喲我去我不分析流程了,怕再說迷糊了。

實驗2

本實驗使用函數wait(),同實驗2一樣,也是先用fork()新建一個子進程,然后讓子進程暫停5s。接下來對原有的父進程使用wait()函數。不同的是,wait()函數會使得父進程阻塞,通過本實驗的結果就可以看出。代碼如下:

執行結果如下圖

我建議你親自實驗一下,能很明顯的看出不同。

wait.c文件下載

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2013年資料/6月/12日/Linux多任務編程

轉載于:https://www.cnblogs.com/hztd/p/4128940.html

總結

以上是生活随笔為你收集整理的Linux多任务编程之五:exit()和_exit()函数(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。