gpt4 book ai didi

c - 关于子进程中的 SIGINT

转载 作者:行者123 更新时间:2023-11-30 17:46:50 24 4
gpt4 key购买 nike

我正在写一个shell,现在它来控制子进程。当我在子进程中使用 signal (SIGTERM, SIG_DFL); 时,

信号 SIGINT 由 Ctrl + C 生成,该信号终止整个操作系统 shell。

我怎样才能终止进程,例如仅终止“cat”,而不终止整个shell?我应该使用类似的东西:

void sig_handler(int sig) {
if(sig ==SIGINT)
{
kill(pid);
}
}

非常感谢一个插槽。

最佳答案

你的问题比较模糊。您能更清楚地了解您想要实现的目标吗?我认为你应该使用 signal(SIGTERM, sig_handler) 而不是 SIG_DFL 这是默认采取的操作。由于您有一个信号处理程序,因此您可以调用它而不是调用 SIG_INT 或 SIG_DFL 等预定义函数。您的函数内的代码看起来不错。只要你知道pid,你就可以执行kill(pid)。

关于c - 关于子进程中的 SIGINT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141593/

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