- 论坛徽章:
- 1
|
哪位高手愿意谈一下信号的使用?
原帖由 "yuxh" 发表:
对于SIGUSR1这种信号,用signal函数是每次都要调用的
用sigaction函数只要调用一次
我记得答案试这样的,可不确定。试验了一下,似乎并不是这样的,怎么回事?
- [yangwl:/home/users50/yangwl/test/signal]$ vi test.c
- #include <stdio.h>;
- #include <stdlib.h>;
- #include <signal.h>;
- #include <unistd.h>;
- void sig1(int sig);
- int main(void)
- {
- if (signal(SIGUSR1, sig1) == SIG_ERR) {
- perror("sig1 error");
- exit(1);
- }
- while (1) {
- pause();
- }
- exit(0); // no use.
- }
- void sig1(int sig)
- {
- printf("in sig1, %d\n", sig);
- return ;
- }
- ~
- ~
- ~
- ~
- ~
- ~
- "test.c" 24L, 312C 已写入
- [yangwl:/home/users50/yangwl/test/signal]$ !g
- gcc test.c
- [yangwl:/home/users50/yangwl/test/signal]$ ./a.out &
- [1] 4892
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ kill -USR1 4892
- in sig1, 10
- [yangwl:/home/users50/yangwl/test/signal]$ ps -ef | grep yangwl
- yangwl 1290 1288 0 Dec23 ? 00:00:00 /usr/sbin/sshd
- yangwl 1291 1290 0 Dec23 pts/19 00:00:00 -bash
- yangwl 4892 1291 0 13:33 pts/19 00:00:00 ./a.out
- yangwl 4921 1291 0 13:36 pts/19 00:00:00 ps -f -ef
- yangwl 4922 1291 0 13:36 pts/19 00:00:00 grep yangwl
- [yangwl:/home/users50/yangwl/test/signal]$ kill 4892
- [1]+ Terminated ./a.out
- [yangwl:/home/users50/yangwl/test/signal]$ l
复制代码 |
|