实现linux系统调用以重启

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现linux系统调用以重启相关的知识,希望对你有一定的参考价值。

我试图在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是用户空间命令。如果您对如何实现重新启动感兴趣,请查看kernel / reboot.c。

以上是关于实现linux系统调用以重启的主要内容,如果未能解决你的问题,请参考以下文章

linux 内核通过啥系统调用,来与硬件交互?

gcc / Linux:挂钩exit()调用以防止退出

当我调用 startResolutionForResult 时,onActivityResult() 没有在片段中执行

Linux系统调优权威指南

Linux系统调优——实战

csharp 可以从regasm.exe / regsvc.exe调用以执行任意代码的DLL