我正在尝试在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;
}发布于 2019-04-24 12:18:09
这是不可行的。如果您定义了一个系统调用,那么您就处于内核上下文中。在内核上下文中,您不能调用属于c std库的库。您只能调用作为内核一部分的函数。此外,shutdown是一个用户空间命令。如果您对reboot是如何实现的感兴趣,可以查看kernel/reboot.c。
https://stackoverflow.com/questions/55668741
复制相似问题