gpt4 book ai didi

linux - 如何在 C 代码中从其中一个进程触发时重新启动一组进程

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:16 24 4
gpt4 key购买 nike

我有几个用 C 编写的进程 *.rt。

我想在进程 foo.rt(*.rt 之一)本身(内置 C 代码)中重新启动所有这些(*.rt)

通常我有 2 个 bash 脚本 stop.sh 和 start.sh。这些脚本是从 shell 调用的。

这里是脚本的工作人员stop.sh --> 向所有“.rt”文件发送kill -9 信号。start.sh -->调用名为“.rt”的进程

我的问题是如何从 C 代码重新启动所有 rt。有没有什么想法可以重新启动从 foo.rt 文件触发的所有“*.rt”文件?

我尝试在 foo.rt 中使用它,但它不起作用。 *因为 stop.sh 正在杀死所有 .rt 文件,即使它是作为子文件 fork 并部署来执行 start.sh 脚本的

...
case 708: /* There is a trigger signal here*/
{
result = APP_RES_PRG_OK;
if (fork() == 0) { /* child */
execl("/bin/sh","sh","-c","/sbin/stop.sh",NULL);
execl("/bin/sh","sh","-c","/sbin/start.sh",NULL);// Error:This will be killed by /sbin/stop command
}
}

最佳答案

我已经解决了 Linux 中“at”守护进程的问题

我调用了 2 个 system() 调用停止和启动。

如上所述,我的第一次尝试是错误的。 execl 生成一个新的镜像,除非成功,否则永远不会返回到后面的 execl

这是我的解决方案

case 708: /*There is a trigger signal here*/
{
system("echo '/sbin/start.sh' | at now + 2 min");
system("echo '/sbin/stop.sh | at now + 1 min");
}

关于linux - 如何在 C 代码中从其中一个进程触发时重新启动一组进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25592474/

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