关于pause函数时挂起进程还是挂起线程的验证
2016-04-03 10:59
218 查看
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <pthread.h>
void * timer(void *)
{
for(int i = 0; i< 200; i++)
printf("my name is chen yi cong \n");
return NULL;
}
void *testp(void *)
{
int ret = alarm(2);
pause();
return NULL;
}
int main()
{
//int ret = alarm(5) ;//设置一个定时器
//signal(SIGALRM, timer);
//pause();
pthread_t t1, t2;
printf("begin to test\n") ;
pthread_create(&t1, NULL, &testp, NULL);
pthread_create(&t2, NULL, &timer, NULL);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
return 0;
}
输出如下:
从上面文件的输出可以看出,pause只是挂起所在的线程,然而当SIGALRM信号到达的时候,pause函数会将整个进程终止掉。
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <pthread.h>
void * timer(void *)
{
for(int i = 0; i< 200; i++)
printf("my name is chen yi cong \n");
return NULL;
}
void *testp(void *)
{
int ret = alarm(2);
pause();
return NULL;
}
int main()
{
//int ret = alarm(5) ;//设置一个定时器
//signal(SIGALRM, timer);
//pause();
pthread_t t1, t2;
printf("begin to test\n") ;
pthread_create(&t1, NULL, &testp, NULL);
pthread_create(&t2, NULL, &timer, NULL);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
return 0;
}
输出如下:
从上面文件的输出可以看出,pause只是挂起所在的线程,然而当SIGALRM信号到达的时候,pause函数会将整个进程终止掉。
相关文章推荐
- 从尾到头打印链表
- 每个线程分配一个stack,每个进程分配一个heap;heap没有结构,因此寻址慢(转)
- MUI APP防止登陆页面出现白屏
- Unity3D中使用Profiler精确定位性能热点的优化技巧
- Java编程题
- 三角形类锥形
- Java 中无参无返回值方法的使用
- 【追求进步】腾讯实习生面试题
- 描述复数
- python中的operator库
- 求平面上两点距离
- android TextView中文字的阴影效果
- 项目中的一些轶事
- 声明式编程和命令式编程的比较(转)
- 通用PE u盘装Ghost Win7系统
- 在Spring中使用自定义的Annotation
- MySQL 查询缓存
- ++ function、bind以及lamda表达式
- java中缓存的使用
- IOS开发新的一天