Завершить работу системы
#include <sys/shutdown.h>void shutdown_system( int type,int flags );
SHUTDOWN_PHOTON
). libshutdown
Функция shutdown_system() производит выход из оболочки Photon, перезагружает или завершает работу системы, в зависимости от аргумента type. Функция сначала производит попытку завершения приложений Photon, затем отключает сам Photon, а после все процессы, не относящиеся к Photon.
Вы можете настроить эту функцию, предоставив свои собственные обработчики, чтобы переопределить те, что имеются в библиотеке:
Утилиты phshutdown и shutdown используют данную библиотеку, предоставляя свои обработчики.
ProcessClass_t shutdown_classify( ProcessInfo_t const *pip );
Данный обработчик определяет, является приложение консольным или использующим Photon, на основе информации, представленной в структуре, на которую указывает pip. Структура ProcessInfo_t
определена следующим образом:
typedef struct {uint64_t start_time;pid_t pid;int8_t class;uint8_t padding[3];char *name;} ProcessInfo_t;
Функция shutdown_system() распознает некоторые приложения по их именам или другой вспомогательной информации, и вызывает shutdown_classify() для определения типа тех приложений, которые не были распознаны.
Обработчик shutdown_classify() должен возвращать один из определенных типов классов:
Обработчик по умолчанию всегда безоговорочно возвращает CLASS_UNKNOWN
.
void shutdown_display( int type,DisplayData_t const *display );
Данный обработчик может выводить имя процесса или класса процессов, которые завершают работу, в зависимости от аргумента type:
Обработчик по умолчанию не выполняет никаких действий.
Структура DisplayData_t
предоставляет информацию о том, что в данный момент завершает работу. Она определена следующим образом:
typedef union {int proc_class; /* use for DISPLAY_CLASS */char const *proc_name; /* use for DISPLAY_PROC */} DisplayData_t;
Член proc_class является одним тех из типов классов, что возвращается функцией shutdown_classify().
void shutdown_done( int type );
Данный обработчик вызывается перед завершением работы дисплейных процессов, но после завершения работы остальных. Аргумент type передается тот же, что и в shutdown_system().
Обработчик по умолчанию не выполняет никаких действий.
void shutdown_error( char const *msg );
Библиотека вызывает данный обработчик в случае возникновения ошибки; библиотека завершает работу, сообщает об ошибке, после вызова данного обработчика. Обработчик по умолчанию не выполняет никаких действий.
void shutdown_process( void );
Данный обработчик вызывается для обработки промежуточных событий в процессе завершения работы. Обработчик по умолчанию не выполняет никаких действий.
void shutdown_progress( int done,int total );
Данный обработчик вызывается для отображения прогресса завершения работы. Аргумент done показывает количество процессов, которые уже были завершены, а также количество всех процессов total.
Обработчик по умолчанию не выполняет никаких действий.
int shutdown_prompt( char const *name,pid_t pid );
Данный обработчик вызывается при появлении процесса, который не отвечает. Обработчик должен вернуть одно из следующих значений для того, чтобы дать понять библиотеке, как требуется поступить с данным процессом:
SIGKILL
для данного процесса. SIGTERM
. Обработчик по умолчанию возвращает PROMPT_SKIP
.
ЗОСРВ «Нейтрино»
phlogin2, phlogin2, phshutdown,
shutdown в Справочнике по Утилитам
Предыдущий раздел: Описание API библиотеки shutdown