我一直在做插座編程,下面是選擇系統呼叫。如果這個程式在5秒內沒有得到一個輸入,它就會終止,否則它就會在終端執行命令。我不明白程式的哪一部分使給定的資訊作為命令在終端執行。例如,如果我們輸入ls并輸入回車,它就會在終端執行ls命令,但我不明白代碼的哪一部分負責執行ls命令。請幫助我。下面是代碼。
#include <stdio.h>/span>
#include <stdlib.h>
#include <sys/time.h>/span>
#include <sys/types.h>/span>
#include <unistd.h>
int main(void)
{
fd_set rfds;
struct timeval tv;
int retval;
/* 觀察stdin(fd 0),看它何時有輸入。*/
FD_ZERO(&rfds)。
FD_SET(0, &rfds)。
/* 等待最多五秒鐘。*/
tv.tv_sec = 5; //in seconds[/span
tv.tv_usec = 0; /in microseconds。
retval = select(1, &rfds, NULL, NULL, &tv)。
/* 現在不要依賴tv的值! */
if (retval == -1) //select failed[/span
perror("select()")。
else if (retval) //用戶輸入
printf("Data is available now.
")。)
/* FD_ISSET(0, &rfds) 將為真。*/
else
printf("5秒內沒有資料。
")。)
exit(EXIT_SUCCESS)。
}//程式退出。
uj5u.com熱心網友回復:
我不明白代碼的哪一部分負責執行ls命令。
代碼的任何部分都沒有執行該命令。
該命令立即退出。
該命令在有輸入時立即退出。它將不會讀取輸入。相反,你啟動程式的命令shell將在程式退出后讀取輸入并處理輸入--即shell將執行ls.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311831.html
標籤:
