新聞中心
linux中的等待函數(shù)wait.??可以進(jìn)程之間的同步等待,用來(lái)阻塞主進(jìn)程,等待子進(jìn)程的結(jié)果,從而對(duì)其從結(jié)果進(jìn)行控制。wait函數(shù)會(huì)暫停當(dāng)前進(jìn)程的執(zhí)行,直到其中的任務(wù)子進(jìn)程執(zhí)行完畢,或者滿(mǎn)足某些條件為止,也就是說(shuō)主進(jìn)程只有等待子進(jìn)程執(zhí)行結(jié)束,才能返回值。

成都創(chuàng)新互聯(lián)公司專(zhuān)注于洪湖企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,成都做商城網(wǎng)站。洪湖網(wǎng)站建設(shè)公司,為洪湖等地區(qū)提供建站服務(wù)。全流程按需定制開(kāi)發(fā),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
wait函數(shù)原型為:int wait(int *status)。其中status為指針,指向接收此函數(shù)返回值的變量。wait函數(shù)有如下兩種使用方式:
一種是waitPID,其用法如下:
int waitpid(pid_t pid, int *status, int options);
其中pid為指定的子進(jìn)程的進(jìn)程標(biāo)識(shí)符,status為接收返回值的變量的指針,options指定等待的選項(xiàng)。
另一種是wait,其用法如下:
int wait(int *status);
其中status為接收返回值的變量的指針,表示不指定任何子進(jìn)程。
接下來(lái)我們以一段waitpid函數(shù)的代碼為例,對(duì)wait函數(shù)做一個(gè)詳細(xì)解析:
pid_t pid = fork();
if (pid == -1) {
printf("Error: Forking failed!");
exit(1);
}
else if (pid == 0) {
printf("Child process.\n");
exit(0);
}
else {
int status;
waitpid(pid, &status, 0);
printf("Following process has finished with the exit code %d\n", status);
}
首先,它通過(guò)fork()函數(shù)創(chuàng)建了一個(gè)子進(jìn)程,并且把子進(jìn)程的進(jìn)程標(biāo)識(shí)符保存到了pid中。然后,它檢查這個(gè)子進(jìn)程是否創(chuàng)建成功,若成功,則進(jìn)入else分支。在else中,它使用waitpid函數(shù),等待由pid表示的子進(jìn)程結(jié)束,并將結(jié)束返回值保存在status中(如果子進(jìn)程未結(jié)束,則會(huì)暫停在這里等待)。最后,將結(jié)束返回值打印出來(lái)。
以上就是linux中的等待函數(shù)wait的深度解析。wait函數(shù)的使用非常方便,正確使用它可以讓進(jìn)程更好地控制子進(jìn)程的結(jié)果。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專(zhuān)業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
當(dāng)前名稱(chēng):有關(guān)等待Linux:wait函數(shù)深度解析(waitlinux)
URL分享:http://www.dlmjj.cn/article/cdoheee.html


咨詢(xún)
建站咨詢(xún)
