结论是:
多线程下如果其中一个线程崩溃了会导致其他线程(整个进程)都崩溃;
多进程下如果其中一个进程崩溃了对其余进程没有影响;
【浅谈linux模拟多线程崩溃和多进程崩溃】多线程
#include #include #include #include #include void *fun1(void *arg){ printf("fun1 enter\n"); while(1) {printf("%s\n", __FUNCTION__);usleep(1000 * 1000); } printf("fun1 exit\n"); return ((void *)1);}void *fun2(void *arg){ printf("fun1 enter\n"); usleep(1000 * 3000); char * ptr = (char *)malloc(sizeof(char)); printf("ptr1: 0x%x\n", ptr); ptr = NULL; printf("ptr2: 0x%x\n", ptr); free(ptr); memcpy(ptr, "123", 3); printf("ptr3: 0x%x\n", ptr); printf("fun2 exit\n"); return ((void *)2);}int main(void){ pthread_t tid1, tid2; int err;err = pthread_create(&tid1, NULL, fun1, NULL); assert(0 == err); err = pthread_create(&tid2, NULL, fun2, NULL); assert(0 == err);printf("main join ...\n");// getchar(); pthread_join(tid1, NULL); pthread_join(tid2, NULL);return 0;}多进程
#include #include #include #include #include void fun(void *arg){ printf("fun1 enter\n"); usleep(1000 * 3000); char * ptr = (char *)malloc(sizeof(char)); printf("ptr1: 0x%x\n", ptr); ptr = NULL; printf("ptr2: 0x%x\n", ptr); free(ptr); memcpy(ptr, "123", 3); printf("ptr3: 0x%x\n", ptr); printf("fun2 exit\n"); return ;}int main(int argc, char *argv[]){ assert(2 == argc); pid_t pid; int i; for(i=0; i pid){printf("fork error");exit(1);}else if(0 == pid){printf("child pid is %lu\n", (unsigned long)getpid());fun(NULL);exit(0);} }printf("parent pid is %lu\n", (unsigned long)getpid()); while(-1 != wait(NULL));//等待所有子进程结束 printf("main return\n"); getchar();return 0;}到此这篇关于浅谈linux模拟多线程崩溃和多进程崩溃 的文章就介绍到这了,更多相关linux模拟多线程崩溃和多进程崩溃 内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
