C - 如果收到SIGINT,则停止运行函数

时间:2015-10-23 01:48:50

标签: c signals sigint

我正在尝试实现自己的shell,如果我收到SIGINT信号,我不知道如何停止它在前台运行的函数。

当这个功能在后台时,它很容易,我只需要创建一个儿子,他将运行该功能:

(...)
int pid = fork();
if (pid == 0){
  signal(SIGINT, killProcess)
  function();
}
(...)

在另一部分:

void killProcess(int num_signal){
   kill(getpid(), SIGKILL);
}

但这在前台不起作用,因为如果函数试图执行“cd”,例如,它将是将改变它的目录而不是shell本身的那个。

该函数不是循环,因此我无法使用变量来停止它。它是一个执行命令的函数,如“cd”,“find”,......

是否可以仅停止/终止函数,而不是整个shell?

谢谢。

0 个答案:

没有答案