我使这个程序可执行,但系统没有关闭。这也需要管理员权限。
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
最佳答案
shutdown 系统调用不会关闭系统。它实现了 shutdown()
函数,该函数关闭套接字上的通信。如果要关闭系统,请使用 reboot()
系统调用。参见 reboot(2)用于文档。
但是,请注意,使用适当的参数调用reboot
会立即关闭系统,而不会给软件时间来正确关闭并且不会同步文件系统。我强烈建议您通过调用 shutdown
实用程序来关闭系统,该实用程序会根据您的初始化系统执行正确的操作。如果您不想这样做,您至少应该先调用 sync()
以将所有传输中的数据提交到磁盘。
关于linux - 如何使用 64 位汇编编程在 Linux 中使用关闭调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53714347/