实现linux系统调用以重启

问题描述 投票:0回答:1

我试图在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;
}
linux kernel system-calls reboot
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.