来自C程序的陷阱命令?

时间:2018-12-29 10:44:51

标签: c shell trap

我想从C程序运行trap '' 2命令,以防止在运行ctrl-c时出现a.out

#define TRAP "trap '' 2"

int     main()
{
    system(TRAP);

    ...
}

我可以从一个同时运行程序的.sh文件中使它工作,但我希望所有内容都在一个.c文件中。

trap '' 2
cd /Users/me
./a.out

然后我试图制作另一个运行脚本的.c文件,然后启动第一个a.out,因为我认为这是第一次计时问题,也没有成功...

我如何才能使其在单个a.out中工作,甚至有可能实现?

1 个答案:

答案 0 :(得分:1)

trap '' INT忽略SIGINT。忽略处置将继承给子进程,因此:

trap '' 2
cd /Users/me
./a.out

忽略SIGINT后面的内容,但无法处理流程层次结构。

幸运的是,忽略C中的SIGINT并不是很困难。

#include <signal.h>
int main()
{
   //....
   signal(SIGINT,SIG_IGN); // `trap '' INT` in C
   //^should never fail unless the args are buggy
   //...
}