2024年3月31日发(作者:)

信号处理函数

alarm(设置信号传送闹钟)

相关函数

signal,sleep

表头文件

#include

定义函数

函数说明

返回值

范例

执行

unsigned int alarm(unsigned int seconds);

alarm()用来设置信号SIGALRM在经过参数

seconds指定的秒数后传送给目前的进程。如果

参数seconds 为0,则之前设置的闹钟会被取

消,并将剩下的时间返回。

返回之前闹钟的剩余秒数,如果之前未设闹钟则

返回0。

#include

#include

void handler() {

printf(“hellon”);

}

main()

{

int i;

signal(SIGALRM,handler);

alarm(5);

for(i=1;i<7;i++){

printf(“sleep %d ...n”,i);

sleep(1);

}

}

sleep 1 ...

sleep 2 ...

sleep 3 ...

sleep 4 ...

sleep 5 ...

hello

sleep 6 ...

kill(传送信号给指定的进程)

相关函数

raise,signal

表头文件

#include

定义函数

函数说明

返回值

错误代码

范例

#include

int kill(pid_t pid,int sig);

kill()可以用来送参数sig指定的信号给参数

pid指定的进程。参数pid有几种情况:

pid>0 将信号传给进程识别码为pid 的进程。

pid=0 将信号传给和目前进程相同进程组的所

有进程

pid=-1 将信号广播传送给系统内所有的进程

pid<0 将信号传给进程组识别码为pid绝对值

的所有进程

参数sig代表的信号编号可参考附录D

执行成功则返回0,如果有错误则返回-1。

EINVAL 参数sig 不合法

ESRCH 参数pid 所指定的进程或进程组不存在

EPERM 权限不够无法传送信号给指定进程

#include

#include

#include

#include

main()

{

pid_t pid;

int status;

if(!(pid= fork())){

printf(“Hi I am child process!n”);

sleep(10);

return;

}

else{

printf(“send signal to child process (%d)

n”,pid);