当前位置: 技术问答>linux和unix
alarm的问题
来源: 互联网 发布时间:2016-05-17
本文导语: #include #include #include #include #include #include #include void sig_alrm(int signo) { printf("enter alrm %dn",signo); } void *th_fun(void *arg) { printf("enter threadn"); if(signal(SIGALRM,sig_alrm) == SIG_ERR) { printf("sig errorn"); } printf("enter alarmn"); ...
#include
#include
#include
#include
#include
#include
#include
void sig_alrm(int signo)
{
printf("enter alrm %dn",signo);
}
void *th_fun(void *arg)
{
printf("enter threadn");
if(signal(SIGALRM,sig_alrm) == SIG_ERR) {
printf("sig errorn");
}
printf("enter alarmn");
alarm(5);
printf("out alarmn");
pause();
printf("out pausen");
return NULL;
}
void test()
{
pthread_t tid;
int err;
err = pthread_create(&tid, NULL, th_fun, NULL);
if(err 0) {
if(waitpid(pid,NULL,0) != pid) {
printf("waitpid errorn");
}
}
sleep(20);
return 0;
}
编译及运行结果:
[root@localhost signaltest]# g++ -lpthread alarm.cpp
[root@localhost signaltest]# ./a.out
enter thread
enter alarm
out alarm
test mode:
enter alrm 14
[root@localhost signaltest]#
没有走创建线程的进入sig_alrm的打印信息,
没有走线程的pause
请问一下,为什么?谢谢
|
你的内核版本是多少?