Как использовать вызов выключения в Linux с помощью программирования на 64-битной сборке? - PullRequest
0 голосов
/ 11 декабря 2018

Я сделал эту программу исполняемой, но система не закрывается. Для этого также необходимы права администратора.

section .text
global _start
_start:
      mov rax,48 ;shutdown system call
      mov rdi,60 ;time taken to shutdown(1 hour)
      syscall
      mov rax,60
      mov rdi,0
      syscall 

1 Ответ

0 голосов
/ 11 декабря 2018

Системный вызов shutdown не завершает работу системы.Он реализует функцию shutdown(), которая отключает связь на сокете.Если вы хотите выключить систему, используйте системный вызов reboot().См. reboot (2) для документации.

Однако имейте в виду, что вызов reboot с соответствующими аргументами немедленно выключает систему, не давая времени программному обеспечению правильно завершить работу и не синхронизируя файл.системы.Я настоятельно рекомендую вам вместо этого выключить систему, вызвав утилиту shutdown, которая работает правильно в зависимости от вашей системы инициализации.Если вы не хотите этого делать, вы должны хотя бы сначала вызвать sync(), чтобы зафиксировать все данные в полете на диске.

...