在 sysvinit 中,`telinit` 和 `init` 是否在同一进程中运行?

在 sysvinit 中,`telinit` 和 `init` 是否在同一进程中运行?

https://manpages.debian.org/stretch/sysvinit-core/init.8.en.html

/sbin/telinit 链接到 /sbin/init。它需要一个字符参数并且信号init 来执行适当的操作。

...

Init 监听/run、/run/initctl 中的 fifo, 对于消息。Telinit 使用它与 init 进行通信。

第一句话是否意味着这 telinit是一个符号链接init?如果是,那么telinitinit在同一进程中运行是否正确(例如可能通过某种文件锁定)?如果是,如何使用 FIFO 或信号telinit进行通信?init

作为比较,在 Systemd 中,systemdsystemctl是不同的程序文件。与sysvinit 中的telinitto 执行相同的角色吗 ?initsystemctlsystemd

谢谢。

答案1

它是一个符号链接,但程序可以查看它们的调用方式并执行不同的操作。这在 Unix 世界中极为常见。

因此,当您运行telinitcomamnd 时,它会在自己的进程空间中运行,分离init过程中。它向进程发送一条消息init。这可以通过 FIFO 或信号发送,具体取决于编译时选项。

相关内容