当前位置: 技术问答>linux和unix
关于 signal alarm pause
来源: 互联网 发布时间:2016-03-19
本文导语: 我想实现功能,每2秒钟printf一行字符串。写了两个程序测试signal alarm pause。一个成功,另一个失败。想知道为什么。程序如下: // file alrm_bad.c // gcc -Wall -o alrm_bad alrm_bad.c #include #include #include #include st...
我想实现功能,每2秒钟printf一行字符串。写了两个程序测试signal alarm pause。一个成功,另一个失败。想知道为什么。程序如下:
谢谢。
// file alrm_bad.c
// gcc -Wall -o alrm_bad alrm_bad.c
#include
#include
#include
#include
static void sig_alrm(int);
int main(int argc, char *argv[]) {
if (signal(SIGALRM, sig_alrm) == SIG_ERR)
perror("signal error");
alarm(2);
pause();
exit(0);
}
static void
sig_alrm(int signo) {
printf("SIGALRM receivedn");
alarm(2);
pause();
}
// file alrm.c
// gcc -Wall -o alrm alrm.c
#include
#include
#include
#include
static void sig_alrm(int);
int main(int argc, char *argv[]) {
if (signal(SIGALRM, sig_alrm) == SIG_ERR)
perror("signal error");
alarm(2);
for (;;)
pause();
exit(0);
}
static void
sig_alrm(int signo) {
printf("SIGALRM receivedn");
alarm(2);
}
谢谢。
|
// file alrm_bad.c
// gcc -Wall -o alrm_bad alrm_bad.c
#include
#include
#include
#include
static void sig_alrm(int);
int main(int argc, char *argv[]) {
if (signal(SIGALRM, sig_alrm) == SIG_ERR)
perror("signal error");
alarm(2);
pause(); //////第一次alarm之后就停在这里,2秒后执行完sig_alrm函数就执行下一条语句,进程结束了。
exit(0);
}
static void
sig_alrm(int signo) {
printf("SIGALRM receivedn");
alarm(2);
pause();
}
[/code]