Chinaunix
标题:
3个程序题目关于signal和thread的
[打印本页]
作者:
nuclearweapon
时间:
2006-09-03 22:10
标题:
3个程序题目关于signal和thread的
下面是我写的3个程序关于signal和线程的。如果向他们发送kill SIGINT信号的话大家能不能不执行程序就说出结果呢?
#include <pthread.h>
#include <signal.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
void sigint(int signo);
void * thr_fn(void *arg)
{
int err, signo;
sigset_t mask,oldmask;
for (;;)
}
void sigint(int signo){
printf("We are in hadler\n");
}
int main(void)
{
int err;
sigset_t oldmask;
pthread_t tid;
sigset_t mask;
signal(SIGINT,sigit);
sigemptyset(&mask);
sigaddset(&mask, SIGINT);
pthread_sigmask(SIG_BLOCK, &mask, &oldmask);
err = pthread_create(&tid, NULL, thr_fn, 0);
for(;;);
}
复制代码
#include <pthread.h>
#include <signal.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
void sigint(int signo);
void * thr_fn(void *arg)
{
int err, signo;
sigset_t mask,oldmask;
sigemptyset(&mask);
sigaddset(&mask, SIGINT);
pthread_sigmask(SIG_BLOCK, &mask, &oldmask);
for (;;);
}
void sigint(int signo){
printf("We are in hadler\n");
}
int main(void)
{
int err;
sigset_t oldmask;
pthread_t tid;
sigset_t mask;
signal(SIGINT,sigint);
pthread_create(&tid, NULL, thr_fn, 0);
for(;;);
}
复制代码
#include <pthread.h>
#include <signal.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
void sigint(int signo);
void * thr_fn(void *arg)
{
int err, signo;
for (;;) {
sigwait(&mask, &signo);
switch (signo) {
case SIGINT:
printf("\ninterrupt\n");
break;
default:
printf("unexpected signal %d\n", signo);
exit(1);
}
}
}
void sigint(int signo){
printf("We are in hadler\n");
}
int main(void)
{
int err;
sigset_t oldmask;
pthread_t tid;
sigset_t mask;
signal(SIGINT,sigint);
sigemptyset(&mask);
sigaddset(&mask, SIGINT);
pthread_sigmask(SIG_BLOCK, &mask, &oldmask);
pthread_create(&tid, NULL, thr_fn, 0);
for(;;);
}
复制代码
BTW:
这些都是平台无关的,所以只要posix兼容的都应改一样。
欢迎排砖。砖头是我提高的动力~~
^_^
[
本帖最后由 nuclearweapon 于 2006-9-3 22:51 编辑
]
作者:
nuclearweapon
时间:
2006-09-03 22:23
受不了
怎么贴出来是这个样子。。。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2