fork()和pthread_create()
一. fork()
该函数用于创建子进程,根本平时学习总结一下几点:
1)根据fork函数的返回值不同, 若返回值大于零则执行的是父进程代码,当然该返回值是子进程的进程号,若返回值等于零则执行的是子进程代码。
2)子进程被创建是就好像是父进程的克隆,注意父进程的所有变量,子进程都会得到一份拷贝,因此改变子进程的变量值不会影响到父进程的变量值。
3)父进程中打开的文件描述父在子进程中也是打开的,呈现共享的状态。因此父子进程对文件描述符进行的操作是会相互影响的。见下图(拷贝于其他博文)
二. pthread_create()
该函数用于创建一个线程,函数原型如下:
int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);
第一个参数为线程ID,第二个参数为线程属性,第三个参数为线程回调函数,线程被创建后执行该函数,第四个参数为传入的参数。
注意线程在被创建后与父进程中的线程共享代码段和全局变量,但是拥有各自的堆栈空间,也就是说父进程的局部变量是不被共享的。
其他几个线程函数:
int pthread_exit(void *retval); //线程安全退出,并将retval 退出码返回给回收者。
int pthread_join(pthread_t thread, void ** retval); //回收其他线程(等待其他线程结束),retval 获得所回收线程的退出信息,回收的线程必须是可回收状态。
线程有两种状态:可回收状态和脱离状态。该状态可有pthread_attr_t 属性反映,PTHREAD_CREATE_JOINABLE 可回收状态, PTHREAD_CREATE_DETACH 脱离状态,该状态下的线程在退出是将自行释放其占用的资源。
int pthread_detach() 将线程设置为脱离状态。
fork()和pthread_create()相关推荐
- clone的fork与pthread_create创建线程有何不同pthread多线程编程的学习小结(转)
进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块.虚存空间.文件系统,文件I/O.信号处理函数.所以创建一个进程的 过程就是这 ...
- clone的fork与pthread_create创建线程有何不同pthread多线程编程的学习小结
进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块.虚存空间.文件系统,文件I/O.信号处理函数.所以创建一个进程的 过程就是这 ...
- Linux多线程实践(一)线程基本概念和理论
线程概念 在一个程序里的一个运行路线就叫做线程(thread).更准确的定义是:线程是"一个进程内部的控制序列/指令序列"; 对于每一个进程至少有一个运行线程; 进程 VS. 线 ...
- 利用FRIDA攻击Android应用程序(三)
利用FRIDA攻击Android应用程序(三) 前言 在我的有关frida的第二篇博客发布不久之后,@muellerberndt决定发布另一个OWASP Android crackme,我很想知道是否 ...
- Android APP破解利器Frida之反调试对抗
本文讲的是Android APP破解利器Frida之反调试对抗,在我发表了关于Frida的第二个博文后不久,@muellerberndt决定发布另外一个新的OWASP Android 破解APP,我很 ...
- 吐血整理 | 肝翻 Linux 进程调度所有知识点|中奖揭晓
前面我们重点分析了如何通过 fork, vfork, pthread_create 去创建一个进程或者线程,以及后面说了它们共同调用 do_fork 的实现.现在已经知道一个进程是如何创建的,但是进程 ...
- Linux多线程实践(1) --线程理论
线程概念 在一个程序里的一个执行路线就叫做线程(thread).更准确的定义是:线程是"一个进程内部的控制序列/指令序列"; 一切进程至少有一个执行线程; 进程 VS. 线程 ...
- linux操作系统之线程
(1)线程(LWP) 可使用命令查看指定线程的LWP号: ps -Lf pid 1)light weigh process(轻量级进程),本质上仍然是进程 进程:独立的地址空间,拥有PCB,最 ...
- Libev documentation
2019独角兽企业重金招聘Python工程师标准>>> NAME libev - a high performance full-featured event loop writte ...
最新文章
- C语言:使用命令行参数用字符串读取流和输出流进行文本文件的复制
- Linux防火墙设置-DNS服务器篇
- BurpSuite插件 -- FastjsonScan(反序列化检测)
- Web 性能优化:使用 CSS font-display 控制字体加载和替换
- asp if 显示按钮_ASP.NET Core 3.1入门教程(二)
- Altium Designer元件库下载
- 小学生python游戏编程_适合刚入门Python小白的趣味游戏编程
- 华中科技大学计算机考研信息汇总
- 【19调剂】湖南师范大学2019年信息科学与工程学院硕士研究生复试(含调剂)方案...
- html 去除ico,去除html页面中GET《 http://localhost:8080/favicon.ico 404 (Not Found)》
- 阿里巴巴分布式消息系统的实践之路
- TensorFlow学习(三)——神经网络进阶
- 微信或QQ屏蔽域名,爆红域名如何在微信打开,如何进行微信域名防封?
- 时钟页面置换算法c语言,clock置换算法例题(改进clock置换算法例题讲解)
- 企业口碑营销,如何塑造全网优质口碑
- Android-蓝牙sco通话
- bugku的做个游戏(08067CTF) writeup
- 传输层协议------TCP协议
- EETOP版主后端面试问题 每日一题
- 编写Python爬虫爬取豆瓣出版社列表并写入文件
热门文章
- 40句让你坦露心声的经典句子[转载]
- 写作经典中的经典——《文心》的读后感作文3600字
- 月薪8000的出租车司机给我上了震撼一课...
- 视觉检测之3D视觉概述
- 基于java红河旅游信息服务系统计算机毕业设计源码+系统+lw文档+部署
- Markdown 快速入门上(基础语法篇)
- linux中进程与线程
- 解密|小游戏与H5游戏的不同之处
- java毕业设计美容美发店会员管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
- WiFi监控摄像机软件有哪些