系统调用如:
1 - 退出
3 - 阅读
4 - 写上
他们工作正常。但是,请致电:
11 - 执行 29 - 暂停
它们不起作用。我尝试过使用十六进制和十进制(只是为了确保我没有弄乱这一点)。请帮忙!
简单的事情:
SECTION .text
global _start
_start:
xor eax, eax
xor ebx, ebx
mov al, 29
int 80h
这是我正在编译的方式。我正在运行x64位Arh Linux并使用NASM编译来模拟i386:
nasm -f elf32 -o temp.o file.asm
ld -s -m elf_i386 -o exec temp.o
rm temp.o
./exec
而不是暂停或任何东西,我什么都没得到。它只是停止(不,它没有停顿)。我可以输入,我可以输入,我可以做任何我想做的事情。一旦我ctrl+c
,它就会关闭。但这不是暂停。
答案 0 :(得分:1)
这似乎适用于x86_64 Archlinux。你怎么知道它不是暂停()?
strace'ing for me表示pause()确实被调用并产生与上述相同的特征。从另一个终端向该进程发送一个SIGHUP也会为我恢复执行。
请提供strace输出。