💾 Archived View for bbs.geminispace.org › s › Linux › 15488 captured on 2024-05-10 at 11:41:58. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-03-21)

➡️ Next capture (2024-05-26)

🚧 View Differences

-=-=-=-=-=-=-

So, I tried to fumble a little with Linux syscalls and tried to implement a program that restarts the computer.

#include <unistd.h>
#include <sys/reboot.h>

int main() {
    sync();
    if (reboot(LINUX_REBOOT_CMD_RESTART) < 0)
        write(2, "Failure.\n", 9);
    return 1;
}

After a quick, successful test, I checked how others implement the reboot. To my surprise, busybox tries to send a signal to init instead of using the reboot syscall, like I did. This makes me wonder, why that is.

Posted in: s/Linux

🔭 DocEdelgas

Mar 05 · 2 months ago · 👍 stack

4 Comments ↓

🚂 MrSVCD · Mar 05 at 21:01:

Does your program let programs to shut down clearly?

🔭 DocEdelgas [OP] · Mar 06 at 00:13:

Not really. Rather, it powers off the system in an instant.

🚂 MrSVCD · Mar 06 at 08:53:

Ah, init systems are responsible for both bringing up and down your system.

For example letting databases to shut down in a known state so that it can continue with all the data intact. While sync() system call might look like it would do that but if it is at all like sync command it only affects filesystems.

📷 sjlxndr · Mar 08 at 01:29:

this is not kill (1) it is more like murder (8) 😅