如何在 Linux中在汇编程序中返回信号?我想返回 SIGALRM(#14 信号)。
global _start
_start:
mov eax, 01h
mov ebx, 0xE
int 80h
但:
Runtime error: time: 0 memory: 140 signal:-1
我知道我做错了,但我怎样才能返回任何 Linux 信号?
我不确定您在“返回信号”下的意思是什么?在 Linux 中,信号是从一个进程发送到另一个进程的事件。
在 Linux 中,sys_kill 或 sys_tkill 用于向某个进程或线程发送信号。
论据是:
sys_kill = 37
eax = 37
ebx = process ID (<-1, -1 and 0 have special meaning)
ecx = signal to send in your case SIGALRM = 14
sys_tkill = 238
eax = 238
ebx = the PID of the thread
ecx = signal ID
所以,如果你想向自己的进程发送信号,你必须先获取进程ID,然后再发送信号:
mov eax, sys_getpid ; sys_getpid = 20
int 80h
mov ebx, eax ; PID to ebx
mov eax, sys_kill
mov ecx, SIGALRM
int 80h
mov eax, sys_exit ; sys_exit = 1
xor ebx, ebx
int 80h