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);
[アラーム](http://www.mkssoftware.com/docs/man3/alarm.3.asp)はあなたの友達です。 –
パイプを閉じるか、ただ閉じます。子プロセスはEPIPE/SIGPIPEで終了します。 – wildplasser
@DavidSchwartz私はアラームを使用し、それは動作しますが、私はアラームハンドラ内pcloseがグローバルVARであり、唯一のオープンとのfreadと他の関数で使用されているファイルディスクリプタ、と正しく実行されません理由を知りません。 – risque