Nhân Linux có thể khởi động lại cứng hoặc gửi SIGINT quá trình init khi Ctrl + Alt + Del
Hạt nhân Linux cho phép hai hành vi có thể có từ Ctrl-Alt-Del:
- khởi động lại ngay lập tức
- gửi SIGINT đến quá trình init
Hành vi nào được sử dụng có thể được chọn với một trong hai:
reboot
gọi hệ thống, xem man 2 reboot
/proc/sys/kernel/ctrl-alt-del
Do đó, nếu hành vi SIGINT được bật, thì kết quả của Ctrl + Alt + Del hoàn toàn phụ thuộc vào trình xử lý SIGINT mà init của bạn có.
Ví dụ: init 1.28.3 của BusyBox thực thi một lệnh tùy ý được đưa ra /etc/inittab
dưới dạng:
::ctrlaltdel:/sbin/reboot
Và đây là một ví dụ C thú vị tối thiểu cho uclibc:
#define _XOPEN_SOURCE 700
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/reboot.h>
#include <unistd.h>
void signal_handler(int sig) {
write(STDOUT_FILENO, "cad\n", 4);
signal(sig, signal_handler);
}
int main(void) {
int i = 0;
/* Disable the forced reboot, enable sending SIGINT to init. */
reboot(RB_DISABLE_CAD);
signal(SIGINT, signal_handler);
while (1) {
sleep(1);
printf("%d\n", i);
i++;
}
return EXIT_SUCCESS;
}
Đây là một thiết lập dễ dàng để thử điều này .
/etc/inittab
sử dụng cho?