gpt4 book ai didi

c - 限制管道程序的执行时间

转载 作者:行者123 更新时间:2023-11-30 18:00:20 25 4
gpt4 key购买 nike

我想在 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);

最佳答案

您可以使用 select() 来做到这一点。 Select 可以“等待”一个或多个文件描述符事件的发生(可读、可写……),并具有可选的超时时间。由于它对文件描述符进行操作,因此您还需要 fileno(ps_pipe)。

但是请记住,您将无法轻松终止 fork 进程,因为 popen 隐藏了子进程的某些细节。如果您需要这样的控制,则需要使用较低级别的函数 fork()、pipe()、dup()、exec()、wait() 以及可能的kill()。

关于c - 限制管道程序的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10571299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com