0
我想在C程序中執行Linux命令,並在程序中從此命令讀取(解析)stdout
。下面的代碼工作,但我不知道如何限制命令的執行時間,除了字符串和字節讀取限制。有任何想法嗎?限制管道程序的執行時間
FILE *ps_pipe;
int bytes_read;
int nbytes = 100;
char *my_string=NULL;
char message[1024];
message=sprintf(message,"any command here");
ps_pipe = popen (message, "r");
my_string = (char *) malloc (nbytes + 1);
bytes_read = getdelim (&my_string, &nbytes, "delimiter_word", ps_pipe);
pclose(ps_pipe);
free(my_string);
[alarm](http://www.mkssoftware.com/docs/man3/alarm.3.asp)是你的朋友。 –
要麼就是要關閉管道。子進程將以EPIPE/SIGPIPE結束。 – wildplasser
@DavidSchwartz我使用警報,它的工作原理,但我不知道爲什麼報警處理程序中的pclose不能正確執行文件描述符,這是全局變量,並且在另一個函數中只與open和fread一起使用。 – risque