linux - 如何使用 64 位汇编编程在 Linux 中使用关闭调用?

标签 linux assembly 64-bit

我使这个程序可执行,但系统没有关闭。这也需要管理员权限。

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/

相关文章:

c - 了解 C 中的 for 循环如何与 IA32 机器代码相关

c++ - 在 MSVC 2010 中编译 64 位应用程序

linux - 如何使用shell expr统计目录下的文件个数

linux - 同一个 ELF 文件中的多个 ISA

汇编: `stos m32`和 `stosd`助记符有什么区别?

c++ - QT 5 64 位适用于 Windows 和 VS2010

c++ - 在 64 位操作系统上使用 WaitForSingleObject 的问题

linux - pthread线程池?

linux - Linux 服务器的 SVN 存储库管理是否有任何 GUI 工具?

assembly - CS :APP example uses idivq with two operands?