我试图在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;
}

最佳答案

这不起作用。如果定义了系统调用,则处于内核上下文中。在内核上下文中,不能调用属于c std库的库。只能调用作为内核一部分的函数。此外,shutdown是一个用户空间命令。如果您对如何实现reboot感兴趣,请查看kernel/reboot.c。

关于linux - 实现Linux系统调用以进行重新引导,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55668741/

10-16 11:16