我想从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
中工作,甚至有可能实现?
答案 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
//...
}