【问题标题】:Implementing a linux systemcall for reboot实现一个用于重启的 linux 系统调用
【发布时间】:2019-09-04 05:29:47
【问题描述】:

我正在尝试在 linux 中实现系统调用以在经过的秒数后重新启动系统(系统调用参数)。 我是 linux 和操作系统的新手,任何帮助将不胜感激。

我遇到了麻烦,因为在 /kernel/sys.c 中它不允许我使用 system() 或 sleep(),错误是它是一个隐式声明.....当我尝试制作时。

SYSCALL_DEFINE1(myrestart, int, msg)
{
    int timer = msg * 35;
    sleep(timer);
    system("shutdown -r now");
    return 0;
}

【问题讨论】:

  • 你只能使用内核提供的内核内部的东西。您不能使用 C 库。此外,我很确定你永远不应该只睡在系统调用中。

标签: linux kernel system-calls reboot


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-05-25
    • 2012-09-19
    • 1970-01-01
    • 2015-05-24
    • 2010-10-04
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    相关资源
    最近更新 更多