激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - 詳解C語言中的wait()函數和waitpid()函數

詳解C語言中的wait()函數和waitpid()函數

2021-03-10 15:12C語言教程網 C/C++

這篇文章主要介紹了C語言中的wait()函數和waitpid()函數,注意其在中斷進程方面用法的不同,需要的朋友可以參考下

C語言wait()函數:結束(中斷)進程函數(常用)
頭文件:

?
1
#include <sys/types.h>  #include <sys/wait.h>

定義函數:

?
1
pid_t wait (int * status);

函數說明:wait()會暫時停止目前進程的執行, 直到有信號來到或子進程結束. 如果在調用wait()時子進程已經結束, 則wait()會立即返回子進程結束狀態值. 子進程的結束狀態值會由參數status 返回, 而子進程的進程識別碼也會一快返回. 如果不在意結束狀態值, 則參數 status 可以設成NULL. 子進程的結束狀態值請參考waitpid().

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

范例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
main()
{
  pid_t pid;
  int status, i;
  if(fork() == 0)
  {
    printf("This is the child process. pid =%d\n", getpid());
    exit(5);
   }
  else
  {
    sleep(1);
    printf("This is the parent process, wait for child...\n";
    pid = wait(&status);
    i = WEXITSTATUS(status);
    printf("child's pid =%d . exit status=^d\n", pid, i);
  }
}

執行:

?
1
2
3
This is the child process. pid=1501
This is the parent process, wait for child...
child's pid =1501, exit status =5

C語言waitpid()函數:中斷(結束)進程函數(或等待子進程中斷)
頭文件:

?
1
#include <sys/types.h>  #include <sys/wait.h>

定義函數:

?
1
pid_t waitpid(pid_t pid, int * status, int options);

函數說明:waitpid()會暫時停止目前進程的執行, 直到有信號來到或子進程結束. 如果在調用wait()時子進程已經結束, 則wait()會立即返回子進程結束狀態值. 子進程的結束狀態值會由參數status 返回, 而子進程的進程識別碼也會一快返回. 如果不在意結束狀態值, 則參數status 可以設成NULL. 參數pid 為欲等待的子進程識別碼, 其他數值意義如下:

1、pid<-1 等待進程組識別碼為pid 絕對值的任何子進程.
2、pid=-1 等待任何子進程, 相當于wait().
3、pid=0 等待進程組識別碼與目前進程相同的任何子進程.
4、pid>0 等待任何子進程識別碼為pid 的子進程.

參數option 可以為0 或下面的OR 組合:

WNOHANG:如果沒有任何已經結束的子進程則馬上返回, 不予以等待.
WUNTRACED:如果子進程進入暫停執行情況則馬上返回, 但結束狀態不予以理會. 子進程的結束狀態返回后存于status, 底下有幾個宏可判別結束情況
WIFEXITED(status):如果子進程正常結束則為非0 值.
WEXITSTATUS(status):取得子進程exit()返回的結束代碼, 一般會先用WIFEXITED 來判斷是否正常結束才能使用此宏.
WIFSIGNALED(status):如果子進程是因為信號而結束則此宏值為真
WTERMSIG(status):取得子進程因信號而中止的信號代碼, 一般會先用WIFSIGNALED 來判斷后才使用此宏.
WIFSTOPPED(status):如果子進程處于暫停執行情況則此宏值為真. 一般只有使用WUNTRACED時才會有此情況.
WSTOPSIG(status):取得引發子進程暫停的信號代碼, 一般會先用WIFSTOPPED 來判斷后才使用此宏.

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

范例:參考wait().

延伸 · 閱讀

精彩推薦
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
主站蜘蛛池模板: 九九热免费精品视频 | 欧美成人鲁丝片在线观看 | 久久免费视屏 | 国产乱子视频 | 亚洲精品动漫在线观看 | 一区二区美女视频 | 国产一级毛片高清视频 | 羞羞视频2023 | 在线影院av | 中国fx性欧美xxxx | 久久欧美亚洲另类专区91大神 | 蜜桃传媒视频麻豆第一区免费观看 | 精品国产一二区 | 国产一级一区二区三区 | 欧美成人午夜一区二区三区 | 毛片视频网站在线观看 | 91av网址| 国产超碰人人做人人爱 | 免费视频www在线观看 | 色婷婷综合久久久中文一区二区 | 性爱视频在线免费 | 欧美成人一区二区三区 | 成人毛片在线免费看 | 久久噜噜噜精品国产亚洲综合 | 黄色网欧美 | 黄色18网站| 一级成人欧美一区在线观看 | 国内精品免费一区二区2001 | 欧美精品欧美极品欧美激情 | 国产精品一区久久久久 | 国产精品久久久久久久久久东京 | 欧美雌雄另类xxxxx | 九九热精品视频在线播放 | 成人不卡一区二区 | 福利免费观看 | 久久99精品国产自在现线 | 在线91视频 | 中国精品久久 | 久久精品黄 | 亚洲网在线 | 7777网站|