Linux中的返回信号

时间:2013-09-19 08:22:19

标签: linux assembly nasm

如何在Linux中汇编程序中返回信号?我想要返回SIGALRM(#14信号)。

global _start

_start:
    mov    eax, 01h
    mov    ebx, 0xE
    int    80h

可是:

Runtime error: time: 0 memory: 140 signal:-1

我知道我做错了,但我怎么能回复任何Linux信号?

1 个答案:

答案 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