Команда Trap из программы на C?
Я хотел бы запустить trap '' 2
команда из программы на C, чтобы предотвратить 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 ответ
Решение
trap '' INT
игнорируемых SIGINT
, Игнорировать диспозиции наследуются дочерним процессам, поэтому:
trap '' 2
cd /Users/me
./a.out
игнорируемых SIGINT
за что следует, но это не может работать в иерархии процессов.
К счастью это не супер трудно игнорировать SIGINT
из С.
#include <signal.h>
int main()
{
//....
signal(SIGINT,SIG_IGN); // `trap '' INT` in C
//^should never fail unless the args are buggy
//...
}