Затем "и печать" прием
<?php $flag and print "Blah" ?>
повторит Вздор, если $flag будет верен. НЕ РАБОТАЕТ С ЭХОМ.
Это очень удобно в шаблоне и замене?: это не действительно легко считать.
Если ваше ядро Linux скомпилировано с включенной опцией учета процессов ( CONFIG_BSD_PROCESS_ACT
), вы можете начать запись информации об учете процессов, используя accton (8 )
и используйте sa (8)
для доступа к записанной информации. Записанная информация включает 32-битный код выхода, который включает номер сигнала.
(Этот материал не так широко известен / не используется в наши дни, но я все еще помню его со времен 4.x Bsd на VAXes ...)
Изменено: Короче говоря, ядру ОС все равно, если процесс будет убит. Это зависит от того, регистрирует ли что-нибудь процесс. Все, что заботит ядро на этом этапе, - это освобождение памяти. Но читайте дальше, о том, как его поймать и зарегистрировать ...
Согласно caf и Stephen C , упомянутому в их комментариях ...
atexit
и описал в коде, это должно было быть exit (0);
.. ooops Спасибо, кафе! Исходный
Лучший способ поймать сигнал уничтожения - это использовать обработчик сигналов для обработки нескольких сигналов , а не только SIGKILL
, SIGABRT
(прерывание), SIGQUIT
(завершение программы терминала), и SIGSTOP
SIGHUP
(зависание). Эти сигналы вместе - это то, что может поймать команду kill
в командной строке. Затем обработчик сигналов может регистрировать информацию, хранящуюся в / var / log / messages
(зависит от среды или дистрибутива Linux). Для получения дополнительной информации см. здесь .
Также см. здесь для примера того, как использовать обработчик сигнала с помощью функции sigaction
.
Также было бы неплохо использовать использование функция atexit
, затем, когда код выйдет из во время выполнения, среда выполнения выполнит последнюю функцию перед возвратом в командную строку. Ссылка для atexit
- здесь .
Когда функция C exit
используется и выполняется, функция atexit
будет выполнять указатель функции там, где он применяется, как в примере ниже. - Спасибо за caf !
Пример использования atexit
, как показано:
#include <stdlib.h> int main(int argc, char **argv){ atexit(myexitfunc); /* Beginning, immediately right after declaration(s) */ /* Rest of code */return 0;exit(0); } int myexitfunc(void){ fprintf(stdout, "Goodbye cruel world...\n"); }
Надеюсь, это поможет, функция atexit
будет выполнять указатель функции там, где он применяется, как в примере ниже. - Спасибо caf за это!
Пример использования atexit
, как показано:
#include <stdlib.h> int main(int argc, char **argv){ atexit(myexitfunc); /* Beginning, immediately right after declaration(s) */ /* Rest of code */return 0;exit(0); } int myexitfunc(void){ fprintf(stdout, "Goodbye cruel world...\n"); }
Надеюсь, это поможет, функция atexit
будет выполнять указатель функции там, где он применяется, как в примере ниже. - Спасибо caf за это!
Пример использования atexit
, как показано:
#include <stdlib.h> int main(int argc, char **argv){ atexit(myexitfunc); /* Beginning, immediately right after declaration(s) */ /* Rest of code */return 0;exit(0); } int myexitfunc(void){ fprintf(stdout, "Goodbye cruel world...\n"); }
Надеюсь, это поможет, С наилучшими пожеланиями, Том.
Если вы пишете свою собственную программу, вы можете поймать сигнал уничтожения и записать в файл журнала, прежде чем фактически умереть. Это не работает с kill -9, это просто обычное убийство.
Вы можете увидеть некоторые подробности здесь .
Я не знаю ни одной записи в журнал сигналов, отправленных процессам, если только это не делает убийца OOM.
Если процесс получает его через kill (2),
, тогда, если процесс уже не ведет журнал, единственной внешней трассировкой будет мод ядра. Это довольно просто; просто выполните printk ()
, это как printf ().
Найдите вывод в dmesg
.
Если процесс получает его через / bin / kill
, то установить исполняемый файл оболочки, который ведет журнал, будет относительно легко. Но это (доставка сигнала через / bin / kill
) маловероятно, потому что kill также встроен в bash.
Если вы используете sudo
, он будет зарегистрирован. Помимо этого, убитый процесс может регистрировать некоторую информацию (если только он не был завершен с крайними предубеждениями). Вы даже можете взломать ядро для регистрации сигналов.
Что касается записи причины, по которой процесс был убит, я еще не видел экстрасенсорной программы.
Взлом ядра не для слабонервных, это чертовски весело. Вам нужно будет исправить подпрограммы отправки сигналов для регистрации информации с помощью printk (9) , когда kill (3) , sigsend (2) или что-то подобное. называется.