C說話中getopt()函數和select()函數的應用辦法。本站提示廣大學習愛好者:(C說話中getopt()函數和select()函數的應用辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話中getopt()函數和select()函數的應用辦法正文
C說話getopt()函數:剖析敕令行參數
頭文件
#include <unistd.h>
界說函數:
int getopt(int argc, char * const argv[], const char * optstring);
函數解釋:getopt()用來剖析敕令行參數。
1、參數argc 和argv 是由main()傳遞的參數個數和內容。
2、參數optstring 則代表欲處置的選項字符串。
此函數會前往在argv 中下一個的選項字母,此字母會對應參數optstring 中的字母。
假如選項字符串裡的字母後接著冒號":",則表現還有相干的參數,全域變量optarg 即會指向此額定參數。
假如getopt()找不到相符的參數則會印失足信息,並將全域變量optopt 設為"?"字符, 假如不願望getopt()印失足信息,則只需將全域變量opterr 設為0 便可。
前往值:假如找到相符的參數則前往此參數字母, 假如參數不包括在參數optstring 的選項字母則前往"?"字符,剖析停止則前往-1.
典范
#include <stdio.h> #include <unistd.h> int main(int argc, char **argv) { int ch; opterr = 0; while((ch = getopt(argc, argv, "a:bcde")) != -1) switch(ch) { case 'a': printf("option a:'%s'\n", optarg); break; case 'b': printf("option b :b\n"); break; default: printf("other option :%c\n", ch); } printf("optopt +%c\n", optopt); }
履行:
$. /getopt -b option b:b $. /getopt -c other option:c $. /getopt -a other option :? $. /getopt -a12345 option a:'12345'
C說話select()函數:I/O多工機制
界說函數:
int select(int n, fd_set * readfds, fd_set * writefds, fd_set * exceptfds, struct timeval * timeout);
函數解釋:select()用來期待文件描寫詞狀況的轉變. 參數n 代表最年夜的文件描寫詞加1, 參數readfds、writefds 和exceptfds 稱為描寫詞組, 是用往返傳該描寫詞的讀, 寫或破例的狀態. 底下的宏供給了處置這三種描寫詞組的方法:
參數 timeout 為構造timeval, 用來設置select()的期待時光, 其構造界說以下:
struct timeval { time_t tv_sec; time_t tv_usec; };
前往值:假如參數timeout 設為NULL 則表現select ()沒有timeout.
毛病代碼:履行勝利則前往文件描寫詞狀況已轉變的個數, 假如前往0 代表在描寫詞狀況轉變前已跨越timeout 時光, 當有毛病產生時則前往-1, 毛病緣由存於errno, 此時參數readfds, writefds, exceptfds 和timeout的值釀成弗成猜測。
典范:
罕見的法式片斷:
fs_set readset; FD_ZERO(&readset); FD_SET(fd, &readset); select(fd+1, &readset, NULL, NULL, NULL); if(FD_ISSET(fd, readset){...}