如何使用popen命令引入超时?

时间:2019-07-05 13:06:05

标签: timeout popen

子进程模块没有超时功能,因此主进程可以永远运行。我想介绍一下,如果子进程在X秒内没有退出,则主进程发生超时错误。 / p>

在下面的代码中,我正在从另一个程序中运行带有参数my_script的{​​{1}}。现在,如果在运行my_arg my_script时发生了某种无限循环或某件事,那么父进程将永远运行。

time_out

那么我该如何介绍Time out。我可以在int my_func(){ char ch; FILE *fpipe; FILE *copy_fp; FILE *tmp; char *command=(char *)"/usr/bin/my_script my_arg"; copy_fp=fopen("/tmp/output_file_path","w"); fpipe=(FILE *)popen(command,"r"); if(fpipe){ while( ( ch = fgetc(fpipe) ) != EOF ){ fputc(ch, copy_fp);} } else{ if(copy_fp){ fprintf(copy_fp,"Sorry there was an error opening the file"); } } pclose(fpipe); fclose(copy_fp); return 0; } 中使用select命令来运行另一个脚本,因为select具有unistd.h功能。 还是只能将timeouttimeout一起使用?

0 个答案:

没有答案