当前位置: 技术问答>linux和unix
sigwaitinfo线程为何退出???
来源: 互联网 发布时间:2016-08-08
本文导语: #include #include #include #include pthread_t job; void* dosomething(void* arg) { sigset_t block; struct itimerval itv; sigemptyset(&block); sigaddset(&block, SIGALRM); sigprocmask(SIG_BL...
#include
#include
#include
#include
pthread_t job;
void* dosomething(void* arg)
{
sigset_t block;
struct itimerval itv;
sigemptyset(&block);
sigaddset(&block, SIGALRM);
sigprocmask(SIG_BLOCK, &block, NULL);
itv.it_interval.tv_sec = 2;
itv.it_interval.tv_usec = 0;
itv.it_value = itv.it_interval;
setitimer(ITIMER_REAL, &itv, NULL);
while (1) {
fprintf(stderr, "%dn", time(NULL));
sigwaitinfo(&block, NULL);
}
}
int main(int argc, char *argv[])
{
pthread_create (&job, (pthread_attr_t *) NULL, dosomething, NULL);
pthread_join(job, NULL);
return 0;
}
#include
#include
#include
pthread_t job;
void* dosomething(void* arg)
{
sigset_t block;
struct itimerval itv;
sigemptyset(&block);
sigaddset(&block, SIGALRM);
sigprocmask(SIG_BLOCK, &block, NULL);
itv.it_interval.tv_sec = 2;
itv.it_interval.tv_usec = 0;
itv.it_value = itv.it_interval;
setitimer(ITIMER_REAL, &itv, NULL);
while (1) {
fprintf(stderr, "%dn", time(NULL));
sigwaitinfo(&block, NULL);
}
}
int main(int argc, char *argv[])
{
pthread_create (&job, (pthread_attr_t *) NULL, dosomething, NULL);
pthread_join(job, NULL);
return 0;
}
|
SIGALRM被主线程捕获默认行为退出进程。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。