实施Linux系统调用以重启

时间:2019-04-13 18:38:54

标签: linux kernel system-calls reboot

我正在尝试在linux中实现系统调用,以在经过一定的秒数后重新启动系统(syscall参数)。 我是linux和操作系统的新手,将不胜感激。

我遇到了麻烦,因为在/kernel/sys.c中它不允许我使用system()或sleep(),错误是它是隐式声明.....当我尝试制作时。

SYSCALL_DEFINE1(myrestart, int, msg)
{
    int timer = msg * 35;
    sleep(timer);
    system("shutdown -r now");
    return 0;
}

1 个答案:

答案 0 :(得分:0)

这不起作用。如果定义系统调用,则处于内核上下文中。在内核上下文中,您不能调用c std库中的库。您只能调用内核中的函数。另外,shutdown是用户空间命令。如果您对重启的实现方式感兴趣,请查看kernel / reboot.c。