Signal的表格如下所示:
signal to kill init | reboot() 參數 | kernel | 動作 | |
---|---|---|---|---|
halt | SIGUSR1 | RB_HALT_SYSTEM (0xcdef0123) | kernel_halt() | 停止所有程式 |
poweroff | SIGUSR2 | RB_POWER_OFF (0x4321fedc) | kernel_power_off() | 停止所有程式後關電 (關電未必有實作) |
reboot | SIGTERM | RB_AUTOBOOT (0x01234567) | kernel_restart() | 停止所有程式後再開機 |
與busybox的道理相同,假設我在driver內寫一個 kill_cad_pid(SIGTERM, 1);
接下來就會執行reboot()的動作
假設我是寫 kill_cad_pid(SIGUSR2, 1);
則接下來會進入poweroff的狀態
給不同的Signal會有不同的結果!
如果下這三個busybox指令的其中一個,再加上 -f 參數的話,就直接執行 reboot(),不做 inittab 的 shutdown 動作。
沒有留言:
張貼留言