我正在编写一个Linux C程序,它将作为init执行。最终它需要关闭系统。我已经编写了卸载所有文件系统和实际关闭系统的代码;现在我只需要一种方法让它向所有进程发送SIGTERM
,sleep(5)
,然后向任何剩余进程发送SIGKILL
。
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
...
kill(-1, SIGTERM);
sleep(5);
kill(-1, SIGKILL);
请谨慎使用。
/proc
读取所有数字条目,然后通过 kill()
处理,但是这个方法更加简单。 - Billy
init
?目前还不是很清楚您的意图。如果您确实想用自己的代码替换init
,那么需要进行更多工作,而不仅仅是列出目前的内容。这是一个将作为 init 执行的 Linux C 程序。 - Andrew Henlegdb
让已经运行的 initexec()
这个我正在编写的可执行文件。 - Billysystemd
的Linux发行版,请从这里开始:http://man7.org/linux/man-pages/man1/init.1.html和https://en.wikipedia.org/wiki/Systemd。在这样的Linux系统上,`init`不是一个简单的进程。 - Andrew Henle/proc
来获取所有进程的 ID,然后调用kill()
函数向它们发送SIGTERM
信号。 - Barmar