我正在尝试在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;
}
答案 0 :(得分:0)
这不起作用。如果定义系统调用,则处于内核上下文中。在内核上下文中,您不能调用c std库中的库。您只能调用内核中的函数。另外,shutdown是用户空间命令。如果您对重启的实现方式感兴趣,请查看kernel / reboot.c。