feverg 发表于 2012-09-06 10:50

kill和raise

kill和raise用来发送信号。kill将信号发送到指定进程或进程组,raise向自身发送信号。       #include <sys/types.h>
       #include <signal.h>

       int kill(pid_t pid, int sig);
       int raise(int sig);raise可以用kill来实现raise (signo)等价于kill (getpid(), signo);
执行成功返回0,否则返回非0.
POSIX.1将编号为0的信号定义为空信号. 如果signo参数是0, 则kill仍执行正常的错误检查, 但不发送信号. 这被用来确定一个进程是否存在.#include <stdio.h>
#include <signal.h>
void func ();

int
main (int argc, char **argv)
{
charbuffer = {0};
if (SIG_ERR == signal (SIGINT, &func)) {
    perror ("signal error!\n");
}
for (;;) {
    fgets (buffer, sizeof (buffer), stdin);
    if (strcmp (buffer, "sigint\n") == 0)
      raise (SIGINT);
    else
      printf ("invalid input\n");
}
}

void
func ()
{
printf ("hello world!\n");
}
页: [1]
查看完整版本: kill和raise