嵌入式Linux應(yīng)用編程各函數(shù)原型_第1頁
嵌入式Linux應(yīng)用編程各函數(shù)原型_第2頁
嵌入式Linux應(yīng)用編程各函數(shù)原型_第3頁
嵌入式Linux應(yīng)用編程各函數(shù)原型_第4頁
嵌入式Linux應(yīng)用編程各函數(shù)原型_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、open( )函數(shù)語法格式所需頭文件#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>函數(shù)原型int open(const char *pathname , int flags , int perms)函數(shù)傳入值pathname被打開的文件名(可包括路徑名)flag:文件打開方式O_RDONLY : 以只讀方式打開文件O_WRONLY : 以只寫方式打開文件 O_RDWR : 以讀/寫方式打開文件O_CREATE : 如果該文件不存在,就創(chuàng)建一個新的文件,并用第三方參數(shù)為其設(shè)置權(quán)限O_EXCL

2、 : 如果使用O_CREATE時文件存在,則可返回錯誤消息。這一參數(shù)可測試文件是否存在。此時open是原子操作,防止多個進程同時創(chuàng)建同一個文件O_NOCTTY : 使用本參數(shù)時,若文件為終端,那么該終端不會成為調(diào)用open()的進程的控制終端O_TRUNC : 若文件已經(jīng)存在,那么會刪除文件中的全部原有數(shù)據(jù),并且設(shè)置文件大小為0O_APPEND : 以添加方式打開文件,在打開文件的同時,文件指針指向文件的末尾,將寫入的數(shù)據(jù)添加到文件的末尾perms被打開文件的存取權(quán)限可以用一組宏定義: S_I(R/W/X)(USR/GRP/OTH)其中R/W/X分別表示讀/寫/執(zhí)行權(quán)限USR/GRP/OTH分

3、別表示文件的所有者/文件所屬組/其他用戶(例如,S_IRUSR|S_IWUSR表示設(shè)置文件所有者的可讀可寫屬性,八進制表示法中0600也表示同樣的權(quán)限)函數(shù)返回值成功:返回文件描述符失?。?1close( )函數(shù)格式所需頭文件#include<unistd.h>函數(shù)原型int close(int fd)函數(shù)傳入值fd : 文件描述符函數(shù)返回值0 : 成功-1 : 出錯read( )函數(shù)格式所需頭文件#include<unistd.h>函數(shù)原型ssize_t read(int fd , void *buf , size_t count)函數(shù)傳入值fd : 文件描述符buf

4、 : 指定存儲器存放讀出數(shù)據(jù)的緩沖區(qū)count : 指定讀出的字節(jié)數(shù)函數(shù)返回值成功: 實際讀出的字節(jié)數(shù) 0 : 已到達文件尾-1 : 出錯write( )函數(shù)格式所需頭文件#include<unistd.h>函數(shù)原型ssize_t read(int fd , void *buf , size_t count)函數(shù)傳入值fd : 文件描述符buf : 指定存儲器寫入數(shù)據(jù)的緩沖區(qū)count : 指定寫入的字節(jié)數(shù)函數(shù)返回值成功: 實際讀出的字節(jié)數(shù) 0 : 已到達文件尾-1 : 出錯lseek( )函數(shù)格式所需頭文件#include<unistd.h>#include<s

5、ys/types.h>函數(shù)原型off_t lseek(int fd , off_t offset , int whence)函數(shù)傳入值fd : 文件描述符offset : 偏移量,從起始位置所需要移動的距離,單位是字節(jié),可正可負(向前移,向后移)whence :當(dāng)前位置的基點SEEK_SET : 當(dāng)前位置為文件的開頭,新位置為偏移量SEEK_CUR : 當(dāng)前位置為文件指針的位置,新位置為當(dāng)前位置加上偏移量SEEK_END : 當(dāng)前位置為文件的結(jié)尾,新位置為文件大小加上偏移量大小函數(shù)返回值成功: 文件的當(dāng)前位移-1 : 出錯fcntl( )函數(shù)語法格式所需頭文件#include<sy

6、s/types.h>#include<unistd.h>#include<fcntl.h>函數(shù)原型int fcntl(int fd , int cmd , struck flock *lock)函數(shù)傳入值fd文件描述符cmdF_DUPFD : 復(fù)制文件描述符F_GETFD : 獲得fd的close-on-exec標(biāo)志,若標(biāo)志未設(shè)置,則文件經(jīng)過exec( )函數(shù)之后仍保持打開狀態(tài) F_SETFD : 設(shè)置close-on-exec標(biāo)志,該標(biāo)志由參數(shù)arg的FD_CLOEXEC位決定F_GETFL : 得到open設(shè)置的標(biāo)志F_SETFL : 改變open設(shè)置的標(biāo)志F

7、_GETLK : 根據(jù)lock描述,決定是否上文件鎖F_SETLK : 設(shè)置lock描述的文件鎖F_SETLKW : 這是F_SETLK的阻塞版本(命令名中的W表示wait)。在無法獲取鎖時,會進入睡眠狀態(tài);如果可以獲取鎖或者捕捉到信號則會返回lock結(jié)構(gòu)為flock,設(shè)置記錄鎖的具體狀態(tài)struck flock short l_type ;/F_RDLCK讀取鎖(共享鎖),F_WRLCK寫入鎖 (排斥鎖),F_UNLCK解鎖 off_t l_start ;/加鎖區(qū)域在文件中的相對位移量(字節(jié)),與l_whence值一起決定加鎖區(qū)域的起始位置 short l_whence ;/相對位移量的起點

8、,取值同lseek的whence off_t l_len ;/加鎖區(qū)域的長度 pid_t l_pid ;/進程id函數(shù)返回值成功:0出錯:-1select ( )函數(shù)格式所需頭文件#include<unistd.h>#include<sys/time.h>#include<sys/types.h>函數(shù)原型int select(int numfds , fd_set *readfds , fd_set *writefds , fd_set *exeptfds , struct timeval *timeout)函數(shù)傳入值numfds : 該參數(shù)值為需要監(jiān)視的文

9、件描述符的最大值加1readfds : 由select( )監(jiān)視的讀文件描述符集合writefds : 由select( )監(jiān)視的寫文件描述符集合exeptfds : 由select( )監(jiān)視的異常處理文件描述符集合timeoutNULL : 永遠等待,直到捕捉到信號或文件描述符已準(zhǔn)備好為止具體值: struck timeval類型的指針,若等待了timeout時間還沒有檢測到任何文件描述符準(zhǔn)備好,就立即返回0 : 從不等待,測試所有指定的文件描述符并立即返回函數(shù)返回值成功: 準(zhǔn)備好的文件描述符出錯: -1超時: 0select ( )文件描述符處理函數(shù)FD_ZERO(fd_set *set)

10、清除一個文件描述符集FD_SET(int fd , fd_set *set)將一個文件描述符加入文件描述符集中FD_CLR(int fd , fd_set *set)將一個文件描述符從文件描述符集中清除FD_ISSET(int fd , fd_set *set)如果文件描述符fd為fd_set集中的一個元素,則返回非零值,可以用于測試調(diào)用select( )后文件描述符集中的哪個文件描述符是否有變化注: select( )函數(shù)中的timeout是一個struct timeval類型的指針,結(jié)構(gòu)體結(jié)構(gòu)如下:struct timevallong tv_sec; /秒數(shù)long tv_unsec; /

11、微秒數(shù)poll( )函數(shù)格式所需頭文件#include<sys/types.h>#include<poll.h>函數(shù)原型int poll(struct pollfd *fds , int numfds , int timeout)函數(shù)傳入值fds : struct pollfd結(jié)構(gòu)的指針,用于描述需要對哪些文件的哪些類型的操作進行監(jiān)控struct pollfdint fd ; /需要監(jiān)聽的文件描述符short events ; /需要監(jiān)聽的事件short revents ; /已發(fā)生的事件events成員描述需要監(jiān)聽哪些類型的事件,可以用以下幾種標(biāo)志來描述:POLLIN

12、 : 文件中有數(shù)據(jù)可讀POLLPRI : 文件中有緊急數(shù)據(jù)可讀POLLOUT : 可以向文件寫入數(shù)據(jù)POLLERR : 文件中出現(xiàn)錯誤POLLHUP : 與文件的連接被斷開,只限于輸出POLLNVAL : 文件描述符是不合法的,即它并沒有指向一個成功打開的文件numfds : 需要監(jiān)聽的文件個數(shù),即第一個參數(shù)所指向的數(shù)組中的元素數(shù)目timeout : 表示poll阻塞的超時時間。如果該值小于等于0,則表示無限等待函數(shù)返回值成功: 返回大于0的值,表示時間發(fā)生的pollfd結(jié)構(gòu)的個數(shù)0 : 超時-1 : 出錯串口的設(shè)置主要是設(shè)置struct termios結(jié)構(gòu)體的各成員值,結(jié)構(gòu)體結(jié)構(gòu)如下:#in

13、clude<termios.h>struct termiosunsigned short c_iflag ; / 輸入模式標(biāo)志unsigned short c_oflag ; / 輸出模式標(biāo)志unsigned short c_cflag ; / 控制模式標(biāo)志unsigned short c_lflag ; / 本地模式標(biāo)志unsigned char c_line ; / 線路規(guī)程unsigned char c_ccNCC ; / 控制特性speed_t c_ispeed ; / 輸入速度speed_t c_ospeed ; / 輸出速度c_cflag支持的常量名稱EXTA外部時鐘率

14、AEXTB外部時鐘率BCSIZE數(shù)據(jù)位的位掩碼CS55個數(shù)據(jù)位CS66個數(shù)據(jù)位CS77個數(shù)據(jù)位CS88個數(shù)據(jù)位CSTOPB2個停止位(不設(shè)置則默認(rèn)1個停止位)CREAD接收使能PARENB校驗位使能PARODD使用奇校驗而不使用偶校驗HUPCL最后關(guān)閉時掛線(放棄DTR)CLOCAL本地連接(不改變端口所有者)CRTSCTS硬件流控c_iflag支持的常量名稱IGNPAR忽略奇偶校驗錯誤PARMRK奇偶校驗錯誤掩碼ISTRIP裁減掉第8位比特IXON啟動輸出軟件流控IXOFF啟動輸入軟件流控IXANY允許輸入任意字符可以重新啟動輸出(默認(rèn)為輸入起始字符才重啟輸出)IGNBRK忽略輸入終止條件B

15、RKINT當(dāng)檢測到輸入終止條件時發(fā)送SIGINT信號INLCR將接收到的NL(換行符)轉(zhuǎn)換為CR(回車符)IGNCR忽視接收到的CR(回車符)ICRNL將接收到的CR(回車符)轉(zhuǎn)換為NL(換行符)IUCLC將接收到的大寫字符映射為小寫字符IMAXBEL當(dāng)輸入隊列滿時響鈴c_oflag支持的常量名稱OPOST啟用輸出處理功能,如果不設(shè)置該標(biāo)志則其它標(biāo)志都被忽略O(shè)LCUC將輸出中的大寫字符轉(zhuǎn)換成小寫字符ONLCR將輸出中的換行符轉(zhuǎn)換成回車符ONOCR如果當(dāng)前列號為0,則不輸出回車符OCRNL將輸出中的回車符轉(zhuǎn)換成換行符ONLRET不輸出回車符OFILL發(fā)送填充字符以提供延時OFDEL如果設(shè)置該標(biāo)志

16、,則表示填充字符為DEL字符,否則為NUL字符NLDLY換行符延時掩碼CRDLY回車符延時掩碼TABDLY制表符延時掩碼BSDLY水平退格符延時掩碼VTDLY垂直退格符延時掩碼FFLDY換頁符延時掩碼c_lflag支持的常量名稱ISIG若收到信號字符(INTR、QUIT等),則會產(chǎn)生相應(yīng)的信號ICANON啟用規(guī)范模式ECHO啟用本地回顯功能ECHOE若設(shè)置ICANON,則允許退格操作ECHOK若設(shè)置ICANON,則KILL字符會刪除當(dāng)前行ECHONL若設(shè)置ICANON,則允許回顯換行符ECHOCTL若設(shè)置ECHO,則控制字符(制表符、換行符等)會顯示成”X”,其中X的ASCII碼等于給相應(yīng)控制

17、字符的ASCII碼加上0x40。例如,退格字符(0x08)會顯示為”H”(“H”的ASCII碼為0x48)ECHOKE若設(shè)置ICANON,則允許回顯在ECHOE和ECHOPRT中設(shè)定的KILL字符NOFLSH在通常情況下,當(dāng)接收到INTR、QUIT和SUSP控制字符時,會清空輸入和輸出隊列。如果設(shè)置該標(biāo)志,則所有的隊列不會被清空TOSTOP若一個后臺進程試圖向它的控制終端進行寫操作,則系統(tǒng)向該后臺進程的進程組發(fā)送SIGTTOU信號。該信號通常終止進程的執(zhí)行IEXTEN啟用輸入處理功能c_cc支持的常量名稱VINTR中斷控制字符,對應(yīng)組合鍵為”Ctrl+C”VQUIT退出操作符,對應(yīng)組合鍵為”C

18、trl+Z”VERASE刪除操作符,對應(yīng)鍵為”Backspace”VKILL刪除行符,對應(yīng)組合鍵為”Ctrl+U”VEOF文件結(jié)尾符,對應(yīng)組合鍵為”Ctrl+D”VEOL附加行結(jié)尾符,對應(yīng)鍵為”Carriage return(CR)”VEOL2第二行結(jié)尾符,對應(yīng)鍵為”Line feed”VMIN指定最少讀取的字符數(shù)VTIME指定讀取的每個字符之間的超時時間設(shè)置串口屬性的基本流程保存原先串口配置if ( tcgetattr (fd , &old_cfg) != 0 )perror( “ tcgetattr ” )return -1 ;激活選項newtio.c_cflag |= CLOCA

19、L|CREAD ;cfmakeraw( &new_cfg ) ;設(shè)置波特率cfsetispeed(&new_cfg , B115200) ;cfsetospeed(&new_cfg , B115200) ;設(shè)置字符大小new_cfg.c_cflag &= CSIZE ;new_cfg.c_cflag |= CS8 ;設(shè)置奇偶校驗奇校驗:new_cfg.c_cflag |= (PARODD | PARENB) ;new_cfg.c_iflag |= INPCK ;偶校驗:new_cfg.c_cflag |= PARENB ;new_cfg.c_cflag &

20、;= PARODD ;new_cfg.c_iflag |= INPCK ;設(shè)置停止位new_cfg.c_cflag &= CSTOPB ;new_cfg.c_cflag |= CSTOPB ;設(shè)置最少字符和等待時間new_cfg.c_ccVTIME = 0 ;new_cfg.c_ccVMIN = 0 ;清除串口緩沖int tcdrain(int fd) ;/使程序阻塞,直到輸出緩沖區(qū)的數(shù)據(jù)全部發(fā)送完畢int tcflow(int fd , int action) ;/用于暫?;蛑匦麻_始輸出int tcflush(int fd , int queue_selector) ;/用于清空輸入

21、/輸出緩沖區(qū)激活配置tcsetattr(int fd , int optional_actions , const struct termios *termios_p) ;注:tflush( )函數(shù)中queue_selector取值:TCIFLUSH : 對接收到而未被讀取的數(shù)據(jù)進行清空處理。TCOFLUSH : 對尚未傳送成功的輸出數(shù)據(jù)進行清空處理。TCIOFLUSH : 包括前兩種功能,即對尚未處理的輸入/輸出數(shù)據(jù)進行清空處理。optional_actions取值:TCSANOW : 配置的修改立即生效。TCSADRAIN : 配置的修改在所有寫入fd的輸出都傳輸完畢之后生效。TCSAFL

22、USH : 所有已接收但未讀入的輸入都將在修改生效之前被丟棄。fopen函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型FILE * fopen(const char * path , const char * mode)函數(shù)傳入值path : 包含要打開的文件路徑及文件名mode : 文件打開狀態(tài)r/rb打開只讀/可讀寫文件,該文件必須存在r+/r+bw/wb打開只寫/可讀寫文件,若文件存在則文件長度清為0,即會擦寫文件以前的內(nèi)容;若不存在則建立該文件w+/w+ba/ab以附加方式打開只寫/可讀寫文件。若文件不存在,則會建立該文件;如果文件存在,寫入的數(shù)據(jù)會被加到文件

23、尾,即文件原先的內(nèi)容會被保留a+/a+b函數(shù)返回值成功: 指向FILE的指針失敗: NULLfdopen( )函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型FILE *fdopen(int fd , const char * mode)函數(shù)傳入值fd : 文件描述符mode : 見上表函數(shù)返回值成功: 指向FILE的指針 失敗: NULLfreopen( )函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型FILE *freopen(const char * path , const char * mode , FILE *stream)函數(shù)傳入

24、值path : 包含要打開的文件名及文件路徑mode : 見上表stream : 已打開的文件指針函數(shù)返回值成功: 指向FILE的指針 失敗: NULLfclose( )函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型FILE *fclose(FILE *stream)函數(shù)傳入值stream : 已打開的文件指針函數(shù)返回值成功: 0 失敗: EOFfread( )函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型size_t fread(void * ptr , size_t size , size_t nmemb , FILE * stream)

25、函數(shù)傳入值ptr : 存放讀入記錄的緩沖區(qū)size : 讀取的記錄大小nmemb : 讀取的記錄數(shù)stream : 要讀取的文件流函數(shù)返回值成功: 返回實際讀取到的nmemb數(shù)目失敗: EOFfwrite( )函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型size_t fwrite(const void * ptr , size_t size , size_t nmemb , FILE * stream)函數(shù)傳入值ptr : 存放寫入記錄的緩沖區(qū)size : 寫入的記錄大小nmemb : 寫入的記錄數(shù)stream : 要寫入的文件流函數(shù)返回值成功: 返回實際寫入到的n

26、memb數(shù)目失敗: EOF字符輸入函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型int getc(FILE * stream)int fgetc(FILE * stream)int getchar(void)函數(shù)傳入值stream : 要輸入的文件流函數(shù)返回值成功: 下一個字符失敗: EOF字符輸出函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型int putc(int c , FILE * stream)int streamutc(int c , FILE * stream)int putchar(int c)函數(shù)返回值成功: 字符c失敗:

27、EOF行輸入函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型char * gets(char * s)int fgets(char * s , int size , FILE * stream)函數(shù)傳入值s : 要輸入的字符串size : 輸入的字符串長度stream : 對應(yīng)的文件流函數(shù)返回值成功: s失敗: EOF行輸出函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型int puts(const char * s)int streamuts(char * s , FILE * stream)函數(shù)傳入值s : 要輸入的字符串stream : 對

28、應(yīng)的文件流函數(shù)返回值成功: s失敗: EOF格式化輸出函數(shù)格式1所需頭文件#include<stdio.h>函數(shù)原型int printf(const char * format , .)int streamrintf(FILE *stream , const char * format , .)int sprintf(char * buf , const char * format , .)函數(shù)傳入值format : 記錄輸出格式stream : 文件流buf : 記錄輸出緩沖區(qū)函數(shù)返回值成功: 輸出字符數(shù)(sprintf返回存入數(shù)組中的字符數(shù))失敗: NULL格式化輸出函數(shù)格式2

29、所需頭文件#include<stdio.h>#include<stdarg.h>函數(shù)原型int vprintf(const char * format , va_list arg)int vstreamrintf(FILE *stream , const char * format , va_list arg)int vsprintf(char * buf , const char * format , va_list arg)函數(shù)傳入值format : 記錄輸出格式stream : 文件流buf : 記錄輸出緩沖區(qū)arg : 相關(guān)命令參數(shù)函數(shù)返回值成功: 輸出字符數(shù)(

30、sprintf返回存入數(shù)組中的字符數(shù))失敗: NULL格式化輸入函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型int scanf(const char * format , .)int fscanf(FILE *stream , const char * format , .)int sscanf(char * buf , const char * format , .)函數(shù)傳入值format : 記錄輸入格式stream : 文件流buf : 記錄輸入緩沖區(qū)函數(shù)返回值成功: 輸入字符數(shù)(sscanf返回存入數(shù)組中的字符數(shù))失敗: NULLopendir( )函數(shù)格式

31、所需頭文件#include<sys/types.h>#include<dirent.h>函數(shù)原型DIR * opendir(const char * path)函數(shù)傳入值path : 包含要打開的文件名及文件路徑函數(shù)返回值成功: 指向DIR的指針失敗: NULLfdopendir( )函數(shù)格式所需頭文件#include<sys/types.h>#include<dirent.h>函數(shù)原型DIR * fdopendir(int fd)函數(shù)傳入值fd : 已經(jīng)打開的目錄文件描述符函數(shù)返回值成功: 指向DIR的指針失敗: NULLclosedir( )

32、函數(shù)格式所需頭文件#include<sys/types.h>#include<dirent.h>函數(shù)原型int closedir(DIR * dp)函數(shù)傳入值dp : 已打開的目錄流指針函數(shù)返回值成功: 0失敗: NULLreaddir( )函數(shù)格式所需頭文件#include<dirent.h>函數(shù)原型struct dirent * readdir(DIR * dirp)函數(shù)傳入值dirp : 已經(jīng)打開的目錄流指針函數(shù)返回值成功: 指向struct dirent結(jié)構(gòu)體的指針失敗: NULLstruct direntino_t d_ino ; / inode號

33、off_t d_off ; /目錄項的偏移量unsigned short d_reclen ; /當(dāng)前目錄項的大小unsigned char d_type ; /文件類型char d_name ; /文件名字fork( )函數(shù)格式所需頭文件#include<sys/types.h>#include<unistd.h>函數(shù)原型pid_t fork(void)函數(shù)返回值0 : 子進程子進程ID: 父進程 (大于0的整數(shù))-1 : 出錯exec函數(shù)族成員格式所需頭文件#include<unistd.h>函數(shù)原型int execl(const char * path

34、 , const char * arg , .)int execle(const char * path , const char * arg , . , char * const envp)int execlp(const char * file , const char * arg , .)int execv(const char * path , char * const argv)int execve(const char * path , char * const argv , char * const envp)int execvp(const char * file , char

35、 * const argv)函數(shù)返回值-1 : 出錯exit( )和_exit( )函數(shù)格式所需頭文件exit( ) : #include<stdlib.h>_exit( ) : #include<unistd.h>函數(shù)原型void exit(int status)void _exit(int status)函數(shù)傳入值status是一個整形的參數(shù),可以利用這個參數(shù)傳遞進程結(jié)束時的狀態(tài)。一般來說,0表示正常結(jié)束;其他的數(shù)值表示出現(xiàn)了錯誤,進程非正常結(jié)束。在實際編程時,可以用wait( )系統(tǒng)調(diào)用接收子進程的返回值,根據(jù)不同結(jié)果進行不同處理。wait( )函數(shù)格式所需頭文件

36、#include<sys/types.h>#include<sys/wait.h>函數(shù)原型pid_t wait(int *status)函數(shù)傳入值這里的status是一個整型指針,是該子進程退出時的狀態(tài),若status不為空,則通過它可以獲得子進程的結(jié)束狀態(tài)。另外,子進程的結(jié)束狀態(tài)可由Linux中一些特定的宏來測定。函數(shù)返回值成功: 已結(jié)束運行的子進程的進程號失敗: -1waitpid( )函數(shù)格式所需頭文件#include<sys/types.h>#include<sys/wait.h>函數(shù)原型pid_t waitpid(pid_t pid ,

37、 int * status , int options)函數(shù)傳入值pidpid > 0 : 只等待進程ID等于pid的子進程,不管是否已經(jīng)有其他子進程運行結(jié)束退出,只要指定的子進程還沒有結(jié)束,waitpid( )就會一直等下去pid = -1 : 等待任何一個子進程退出,此時和wait( )作用一樣pid = 0 : 等待其組ID等于調(diào)用進程的組ID的任一子進程pid < -1 : 等待其組ID等于pid的絕對值的任一子進程status同wait( )optionsWNOHANG : 若由pid指定的子進程沒有結(jié)束,則waitpid( ) 不阻塞而立即返回,此時返回值為0WUNTR

38、ACED : 為了實現(xiàn)某種操作,由pid指定的任一子進程已被暫停,且其狀態(tài)自暫停以來還未報告過,則返回其狀態(tài)0 : 同wait( ),阻塞父進程,等待子進程退出函數(shù)返回值正常: 已經(jīng)結(jié)束運行的子進程的進程號0 : 使用選項WNOHANG且沒有子進程退出調(diào)用出錯: -1setsid( ) 函數(shù)語法格式所需頭文件#include<sys/types.h>#include<unistd.h>函數(shù)原型pid_t setid(void)函數(shù)返回值成功: 該進程組ID出錯: -1openlog( )函數(shù)格式所需頭文件#include<syslog.h>函數(shù)原型void

39、openlog(char * ident , int option , int facility)函數(shù)傳入值ident要向每個消息加入的字符串,通常為程序的名稱optionLOG_CONS : 如果消息無法送到系統(tǒng)日志服務(wù),則直接輸出到系統(tǒng)控制終端LOG_NDELAY : 立即打開系統(tǒng)日志服務(wù)的鏈接。在正常情況下,直到發(fā)送到第一條消息時才打開鏈接 LOG_PERROR : 將消息同時送到stderr上LOG_PID : 在每條消息中包含進程的PIDfacility : 指定程序發(fā)送的消息類型LOG_AUTHPRIV : 安全/授權(quán)信息LOG_CRON : 時間守護進程(cron以及at)LOG

40、_DAEMON : 其他系統(tǒng)守護進程LOG_KERN : 內(nèi)核信息LOG_LOCAL07 : 保留LOG_LPR : 行打印機子系統(tǒng)LOG_MAIL : 郵件子系統(tǒng)LOG_NEWS : 新聞子系統(tǒng)LOG_SYSLOG : syslogd內(nèi)部所產(chǎn)生的信息LOG_USER : 一般使用者等級信息LOG_UUCP : UUCP子系統(tǒng)syslog( )函數(shù)格式所需頭文件#include<syslog.h>函數(shù)原型void syslog(int priority , char * format , .)函數(shù)傳入值priority :指定消息的重要性LOG_EMERG : 系統(tǒng)無法使用LOG_

41、ALERT : 需要立即采取措施LOG_CRIT : 有重要情況發(fā)生LOG_ERR : 有錯誤發(fā)生LOG_WARNING : 有警告發(fā)生LOG_NOTICE : 正常情況,但也是重要情況LOG_INFO : 信息消息LOG_DEBUG : 調(diào)試信息format以字符串指針的形式表示輸出的格式,類似于printf( )中的格式closelog( )函數(shù)格式所需頭文件#include<syslog.h>函數(shù)原型void closelog(void)pipe( )函數(shù)格式所需頭文件#include<unistd.h>函數(shù)原型int pipe(int fd2)函數(shù)傳入值fd2

42、: 管道的兩個文件描述符,之后就可以直接操作這兩個文件描述符函數(shù)返回值成功: 0出錯: -1popen( )函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型FILE * popen(const char * command , const char * type)函數(shù)傳入值command : 指向的是一個以null結(jié)束符結(jié)尾的字符串,這個字符串包含一個shell命令,并被送到/bin/sh以-c參數(shù)執(zhí)行,即由shell來執(zhí)行type“r” : 文件指針連接到command的標(biāo)準(zhǔn)輸出,即該命令的結(jié)果產(chǎn)生輸出“w” : 文件指針連接到command的標(biāo)準(zhǔn)輸入,即該命令的結(jié)果

43、產(chǎn)生輸入函數(shù)返回值成功: 文件流指針出錯: -1pclose( )函數(shù)格式所需頭文件#include<stdio.h>函數(shù)原型int pclose(FILE * stream)函數(shù)傳入值stream : 要關(guān)閉的文件流函數(shù)返回值成功: 返回由popen( )所執(zhí)行的進程的退出碼出錯: -1mkfifo( )函數(shù)格式所需頭文件#include<sys/types.h>#include<sys/state.h>函數(shù)原型int mkfifo(const char * filename , mode_t mode)函數(shù)傳入值filename : 要創(chuàng)建的管道m(xù)ode

44、O_RDONLY : 讀管道O_WRONLY : 寫管道O_RDWR : 讀寫管道O_NONBLOCK : 非阻塞O_CREAT : 如果該文件不存在,那么就創(chuàng)建一個新的文件,并用第三個參數(shù)為其設(shè)置權(quán)限 O_EXCL : 如果使用O_CREAT時文件存在,那么可返回錯誤消息,這個參數(shù)可測試文件是否存在函數(shù)返回值成功: 0出錯: -1FIFO相關(guān)的出錯信息EACCESS參數(shù)filename所指定的目錄路徑無可執(zhí)行的權(quán)限EEXIST參數(shù)filename所指定的文件已存在ENAMETOOLONG參數(shù)filename的路徑名稱太長ENOENT參數(shù)filename包含的目錄不存在ENOSPC文件系統(tǒng)的剩

45、余空間不足ENOTDIR參數(shù)filename路徑中的目錄存在但并非真正的目錄EROFS參數(shù)filename指定的文件存在于制度文件系統(tǒng)內(nèi)常見信號的含義及其默認(rèn)操作信號名含義默認(rèn)操作SIGHUP該信號在用戶終端連接(正常或非正常)結(jié)束時發(fā)出,通常實在終端的控制進程結(jié)束時,通知同一會話內(nèi)的各個進程與控制終端不在關(guān)聯(lián)終止SIGINT該信號在用戶輸入INTR字符(通常是Ctrl+C)時發(fā)出,終端驅(qū)動程序發(fā)送此信號并送到前臺進程中的每一個進程終止SIGQUIT該信號和SIGINT類似,但由QUIT字符(通常為Ctrl+C)來控制終止SIGILL該信號在一個進程企圖執(zhí)行一條非法指令時(可執(zhí)行文件本身出現(xiàn)錯

46、誤,或者試圖執(zhí)行數(shù)據(jù)段、堆棧溢出時)發(fā)出終止SIGFPE該信號在發(fā)生致命的算術(shù)運算錯誤時發(fā)出。這里不僅包括浮點運算錯誤,還包括溢出及除數(shù)為0等其他所有的算術(shù)錯誤終止SIGKILL該信號用來立即結(jié)束程序的運行,并且不能被阻塞、處理和忽略終止SIGALRM該信號當(dāng)一個定時器到時的時候發(fā)出終止SIGSTOP該信號用于暫停一個進程,且不能被阻塞、處理或忽略暫停進程SIGTSTP該信號用于交互停止進程,用戶在輸入SUSP字符時(通常是Ctrl+Z)發(fā)出這個信號停止進程SIGCHLD子進程改變狀態(tài)時,父進程會收到這個信號忽略kill( )函數(shù)格式所需頭文件#include<signal.h>#

47、include<sys/types.h>函數(shù)原型int kill(pid_t pid , int sig)pid> 0 : 要發(fā)送信號的進程號0 : 信號被發(fā)送到所有和當(dāng)前進程在同一個進程組的進程-1 : 信號發(fā)給所有的進程表中的進程(除了進程號最大的進程外)< -1 : 信號發(fā)給進程組號為-pid的每一個進程sig : 信號函數(shù)返回值成功: 0出錯: -1raise( )函數(shù)格式所需頭文件#include<signal.h>#include<sys/types.h>函數(shù)原型int raise(int sig)函數(shù)傳入值sig : 信號函數(shù)返回值

48、成功: 0出錯: -1alarm( )函數(shù)格式所需頭文件#include<unistd.h>函數(shù)原型unsigned int alarm(unsigned int seconds)函數(shù)傳入值seconds : 指定秒數(shù),系統(tǒng)經(jīng)過seconds秒后向該進程發(fā)送SIGALRM信號函數(shù)返回值成功: 如果調(diào)用此alarm( )前進程中已經(jīng)設(shè)置了鬧鐘時間,則返回上一個鬧鐘時間的剩余時間,否則返回0出錯: -1pause( )函數(shù)格式所需頭文件#include<unistd.h>函數(shù)原型int pause(void)函數(shù)返回值出錯: -1,并且把error值設(shè)為EINTRsigna

49、l( )函數(shù)格式所需頭文件#include<signal.h>函數(shù)原型typedef void (*sighandler_t)(int);sighandler_t signal(int signum , sighandler_t handler);函數(shù)傳入值signum : 指定信號代碼handlerSIG_IGN : 忽略該信號SIG_DFL : 采用系統(tǒng)默認(rèn)方式處理信號自定義的信號處理函數(shù)指針函數(shù)返回值成功: 以前的信號處理配置出錯: -1sigaction( )函數(shù)格式所需頭文件#include<signal.h>函數(shù)原型int sigaction(int sig

50、num , const struct sigaction * act , struct sigaction * oldact)函數(shù)傳入值signum : 信號代碼,可以是除SIGKILL及SIGSTOP之外的任何一個特定有效信號act : 指向結(jié)構(gòu)sigaction的一個實例的指針,指定對特定信號的處理oldact : 保存原來對相應(yīng)信號的處理函數(shù)返回值成功: 0出錯: -1struct sigactionvoid (*sa_handler)(int signo) ; /sa_handler是一個函數(shù)指針,指定信號處理函數(shù)sigset_t sa_mask ; /sa_mask是一個信號集,可以

51、指定在信號處理程序執(zhí)行過程中哪些信號應(yīng)該被屏蔽int sa_flags ; /sa_flag包含了許多標(biāo)志位,是對信號進行處理的各個選擇項(常見可選值如下變所示)void (*sa_restore)(void) ;常見信號的含義及其默認(rèn)操作 信 號 含 義SA_NODEFER/SA_NOMASK當(dāng)捕捉到此信號時,在執(zhí)行其信號捕捉函數(shù)時,系統(tǒng)不會自動屏蔽此信號SA_NOCLDSTOP進程忽略子進程產(chǎn)生的任何SIGSTOP、SIGTSTP、SIGTTIN和SIGTTOU信號SA_RESTART令重啟的系統(tǒng)調(diào)用起作用SA_ONESHOT/SA_RESETHAND自定義信號只執(zhí)行一次,在執(zhí)行完畢后恢復(fù)信號的系統(tǒng)默認(rèn)動作創(chuàng)建信號函數(shù)語句格式所需頭文件#include<signal.h>函數(shù)原型int sigemptyset(sigset * set)int sigfillset(sigset_t * set)int sigaddset(sigset_t * set , int signum)int sigdelset(sigset_t * se

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論