bsp; pid_t pid; int sig;
说明:本系统调用向一个或一组进程发送一个信号,该信号由参数sig指
定,为系统给出的信号表中的一个.若为0(空信号)则检查错误但
实际上并没有发送信号,用于检查pid的有效性.
pid指定将要被发送信号的进程或进程组.pid若大于0,则信号将
被发送到进程号等于pid的进程;若pid等于0则信号将被发送到所
有的与发送信号进程同在一个进程组的进程(系统的特殊进程除
外);若pid小于-1,则信号将被发送到所有进程组号与pid绝对值
相同的进程;若pid等于-1,则信号将被发送到所有的进程(特殊系
统进程除外).
信号要发送到指定的进程,首先调用进程必须有对该进程发送信
号的权限.若调用进程有合适的优先级则具备有权限.若调用进程
的实际或有效的UID等于接收信号的进程的实际UID或用setuid()
系统调用设置的UID,或sig等于SIGCONT同时收发双方进程的会话
号相同,则调用进程也有发送信号的权限.
若进程有发送信号到pid指定的任何一个进程的权限则调用成功,
否则调用失败,没有信号发出.
返回值:调用成功则返回0,否则返回-1.
例子:假设前一个例子进程号为324,现向它发一个SIGINT信号,让它做
信号处理:
kill((pid_t)324,SIGINT);
12.alarm()
功能:设置一个进程的超时时钟.
语法:#include <unistd.h>
unsigned int alarm(sec)
unsigned int sec;
说明:指示调用进程的超时时钟在指定的时间后向调用进程发送一个
SIGALRM信号.设置超时时钟时时间值不会被放入堆栈中,后一次
设置会把前一次(还未到超时时间)冲掉.
若sec为0,则取消任何以前设置的超时时钟.
fork()会将新进程的超时时钟初始化为0.而当一个进程用exec()
族系统调用新的执行文件时,调用前设置的超时时钟在调用后仍
有效.
返回值:返回上次设置超时时钟后到调用时还剩余的时间秒数.
例子:int flag=0;
void myself()
{
flag=1;
printf("get signal SIGALRM\n");
/*若要重新设置SIGALRM信号中断处理函数为本函数则执行
*以下步骤*/
void (*a)();
a=myself;
signal(SIGALRM,a);
flag=2;
}
main()
{
alarm(100); &nb