Я интересуюсь выполнением определенной команды каждый раз любая программа, я выполняю выводы "отказ сегментации". В основном у меня есть сценарий удара, который пишет метку времени в файле журнала, и сделайте некоторый другой материал также.
Для моей курсовой работы один модуль запрашивает, чтобы мы сделали это для каждого осуществления. Уверенный я могу сделать сценарий и запустить каждую программу из сценария, но я задавался вопросом, существует ли какой-либо способ обобщить это.
То, что я хочу, действительно для любой программы, которая запущена пользователем, если произведенный содержит "отказ сегментации", выполняют команду
Статус выхода segfaulting's программы установлен на 139
Bash (таким образом, это применяется, по крайней мере, к программам, которые не определили обработчик для SIGSEV, принимающего SIGSEV при выполнении в Bash: это должно соответствовать Вашему случаю использования):
$ cat foo.c
#include <stdio.h>
int main() {
char *ptr = NULL;
*ptr = 'a';
return 0;
}
$ gcc foo.c -o foo
$ ./foo
Segmentation fault (core dumped)
$ echo $?
139
Вы могли установить PROMPT_COMMAND
на что-то вроде этого в ~/.bashrc
:
PROMPT_COMMAND='[ $? -eq 139 ] && printf "SIGSEV received\n"'
Изменение printf "SIGSEV received\n"
к команде Вы хотите работать.
$ PROMPT_COMMAND='[ $? -eq 139 ] && printf "SIGSEV received\n"'
$ printf '\n'
$ ./foo
Segmentation fault (core dumped)
SIGSEV received