如何在Linux中汇编程序中返回信号?我想要返回SIGALRM(#14信号)。
global _start
_start:
mov eax, 01h
mov ebx, 0xE
int 80h
可是:
Runtime error: time: 0 memory: 140 signal:-1
我知道我做错了,但我怎么能回复任何Linux信号?
答案 0 :(得分:1)
我不确定你在“返回信号”下的含义是什么?在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