- 论坛徽章:
- 0
|
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)
- {
- char buffer[128] = {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");
- }
复制代码 |
|