Внедрение системного вызова Linux для перезагрузки - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь реализовать системный вызов в 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;
}

1 Ответ

0 голосов
/ 24 апреля 2019

Это не может работать. Если вы определяете системный вызов, вы находитесь в контексте ядра. В контексте ядра вы не можете вызывать библиотеки, которые являются частью библиотеки c std. Вы можете вызывать только те функции, которые являются частью ядра. Кроме того, shutdown - это команда пространства пользователя. Если вам интересно, как осуществляется перезагрузка, взгляните на kernel / reboot.c.

...