linux的多任务 多进程,浅谈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 = 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模拟多线程崩溃和多进程崩溃 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
linux的多任务 多进程,浅谈linux模拟多线程崩溃和多进程崩溃相关推荐
- Linux系统常用函数,浅谈linux下的一些常用函数的总结(必看篇)
1.exit()函数 exit(int n) 其实就是直接退出程序, 因为默认的标准程序入口为int main(int argc, char** argv),返回值是int型的. 一般在shell下 ...
- Linux命令删除find,浅谈Linux下通过find命令进行rm文件删除的小技巧
我们经常会通过find命令进行批量操作,如:批量删除旧文件.批量修改.基于时间的文件统计.基于文件大小的文件统计等,在这些操作当中,由于rm删除操作会导致目录结构变化,如果要通过find结合rm的操作 ...
- linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释
摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...
- linux cp mv区别,浅谈Linux下mv和cp命令的区别
1.功能上的区别 mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中. cp: 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 2.从inode角度来区分 mv:会 ...
- linux gz文件压缩比,浅谈Linux下各种压缩 解压命令和压缩比率对比.doc
浅谈Linux下各种压缩 解压命令和压缩比率对比 浅谈Linux下各种压缩 解压命令和压缩比率对比 Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的. ...
- 实现Linux的whoami命令,浅谈linux中的whoami与 who指令
whoami 功能说明: 显示用户名称 语法: whoami 补充说明: 显示自身的用户名称,本指令相当于执行 id -un 指令 whoami 与 who am i的区别 who这个命令重点在用来 ...
- linux read函数_浅谈Linux内核IO体系之磁盘IO
前言 Linux I/O体系是Linux内核的重要组成部分,主要包含网络IO.磁盘IO等.基本所有的技术栈都需要与IO打交道,分布式存储系统更是如此.本文主要简单分析一下磁盘IO,看看一个IO请求从发 ...
- linux 用户shell 无效,浅谈Linux环境下,为什么设置用户ID位对shell脚本无效
前言: 博主在前不久的一个项目中,项目组的组员需要删除由daemon守护进程创建的缓存文件.但是删除这些缓存文件需要超级用户权限.博主用root用户创建了一个设置用户id的shell脚本来实现此功能. ...
- linux netbeans 中文乱码,浅谈Linux Netbeans字体反锯齿处理
用的Linux发行版是Ubuntu8.04,如果使用源里面的JDK一切都很简单(现在源里的版本是1.6u6),JDK6开始支持反锯齿.装完Netbeans你就会惊喜的发现,仿原生GUI的界面(GTK+ ...
最新文章
- 如何在保留订单的同时从列表中删除重复项?
- PMCAFF产品经理第一课 | 「在行」价值1.5万元的强大课程体系,365天能力突围
- DB Stack Overflow
- 【转】开机出现 error:file “/boot/grub/i386-pc/normal.mod“ not found 错误提示
- matlab fftshift_MATLAB信号频谱分析FFT详解
- torch.max()函数==》返回该维度的最大值以及该维度最大值对应的索引
- AR+教育意义巨大,将对行业未来产生深远影响
- 全向轮机器人特性分析
- vue从创建到完整的饿了么(10)city.vue的完善(v-if 的简单使用及本地缓存的存储与读取)...
- window.onscroll页面滚动条滚动事件
- C-V2X通信架构中,PC5接口和Uu接口的区别是什么?
- Edge安装插件错误(download interrupted)解决办法
- 【这很AI】斯坦福新人工智能系统曝光:用算法优化难民工作分配
- 关于destoon系统遇到的一些问题总结
- python图片提取文字软件_这款Python 库 4行代码提取图片中的文字
- 一个国企老兵给后辈们的忠告:三十岁之前远离国企
- 小程序 设置小程序打开聊天中的素材
- 中国古代经典励志名言100句,百读不厌,陪孩子一起读经典!
- 对中国标准时间(CST)和中国夏令时(CDT)的不同处理
- elf文件从原理到实现个人总结
热门文章
- TF2 keras Tensoboard学习总结
- Tensorflow ExponentialMovingAverage 详解
- java list 截取_Java常用代码汇总,建议背会
- chrome控制台如何把vw显示成px_【CSS】679 rem,em,px的区别和使用场景
- 吴恩达机器学习 —— 2.7 计算图
- sparseTM的公式理解
- Java使用math3实现矩阵行求和(求行均值)
- 计算机视觉、机器学习相关领域论文和源代码大集合--持续更新……(转载)
- Skywalking-10:Skywalking查询协议——GraphQL
- CSU 1203 Super-increasing sequence