gpt4 book ai didi

C++ 杀死系统创建的进程 && 限制它的执行时间

转载 作者:行者123 更新时间:2023-11-28 03:41:23 26 4
gpt4 key购买 nike

是否可以终止系统创建的进程?据我所知,System 使用 fork() 函数来创建一个新进程。我想跟踪被调用进程的运行时间(在调用系统之前将其 fork )并在超过运行时间限制时将其终止。如果我杀死由我的主进程创建的子进程,那么由 system() 创建的子进程是否也会被杀死?

这不是实际代码,但可以让您了解我在说什么。

int pid = fork();
if(pid == 0)
{
system("./veryLongProgram");
}
else
{
// calculate time elapsed and kill on long execution time
}

如果我可以使用 CPU 时间限制,我也更愿意,但我不想让我的子进程休眠。如果是这样 - 它可能会在很长一段时间内保持这种状态。是否可以中断任何 sleep 、暂停或任何程序故意调用的内容?那将是理想的。或者我可以检查我的进程是否正在休眠(在这种情况下,我还必须确保它是故意这样做的,并且没有因为某些打印或其他原因而暂停)?

最佳答案

  1. 使用exec代替系统
  2. 安排家长接收SIGARLM信号。收到后,使用 kill 系统调用杀死 child 。使用alarm函数设置闹钟。
  3. 让 parent 使用wait系统调用等待 child 自然死亡或因收到系统调用而死亡。

你可以让它不那么苛刻,但首先发送 TERM 信号,让 child 有机会在发送 KILL 信号之前进行整理。

关于C++ 杀死系统创建的进程 && 限制它的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117715/

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