В частности, на Mac OS X можно ли игнорировать программу SIGTERM через DYLD_INSERT_LIBRARIES, что работает для любых или большинства программ?Возможно ли сделать произвольную программу игнорировать сигналы?
Я попытался компиляции и вставки этого:
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
void sig_handler(int signo)
{
if (signo == SIGTERM)
printf("received SIGTERM\n");
}
int main(void)
{
signal(SIGTERM, sig_handler);
return 0;
}
Однако
DYLD_INSERT_LIBRARIES=libignore.dylib sleep 60
смог бы убить -15'd без проблем.
Это похоже на команду ['nohup'] (https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man1/nohup.1.html) для' SIGHUP сигнал. http://www.opensource.apple.com/source/shell_cmds/shell_cmds-118/nohup/nohup.c –
Это решение работает и на других ОС (Linux, Unix и т. д.). Спасибо Максиму! – t0r0X