小知识:浅谈linux模拟多线程崩溃和多进程崩溃

结论是:

多线程下如果其中一个线程崩溃了会导致其他线程(整个进程)都崩溃;

多进程下如果其中一个进程崩溃了对其余进程没有影响;

多线程

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <assert.h>
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;
}

多进程

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <assert.h>
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<atoi(argv[1]); i++)
{
pid = fork();
if(0 > 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模拟多线程崩溃和多进程崩溃 内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://segmentfault.com/a/1190000022828326

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Linux 下载安装VSCode 使用编程输出当前时间的方法

2023-5-9 4:00:17

建站知识

小知识:在网关中使用Nginx配置HTTP透明代理案例

2023-5-9 4:09:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索