一. 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()相关推荐

  1. clone的fork与pthread_create创建线程有何不同pthread多线程编程的学习小结(转)

    进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块.虚存空间.文件系统,文件I/O.信号处理函数.所以创建一个进程的 过程就是这 ...

  2. clone的fork与pthread_create创建线程有何不同pthread多线程编程的学习小结

    进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块.虚存空间.文件系统,文件I/O.信号处理函数.所以创建一个进程的 过程就是这 ...

  3. Linux多线程实践(一)线程基本概念和理论

    线程概念 在一个程序里的一个运行路线就叫做线程(thread).更准确的定义是:线程是"一个进程内部的控制序列/指令序列"; 对于每一个进程至少有一个运行线程; 进程  VS. 线 ...

  4. 利用FRIDA攻击Android应用程序(三)

    利用FRIDA攻击Android应用程序(三) 前言 在我的有关frida的第二篇博客发布不久之后,@muellerberndt决定发布另一个OWASP Android crackme,我很想知道是否 ...

  5. Android APP破解利器Frida之反调试对抗

    本文讲的是Android APP破解利器Frida之反调试对抗,在我发表了关于Frida的第二个博文后不久,@muellerberndt决定发布另外一个新的OWASP Android 破解APP,我很 ...

  6. 吐血整理 | 肝翻 Linux 进程调度所有知识点|中奖揭晓

    前面我们重点分析了如何通过 fork, vfork, pthread_create 去创建一个进程或者线程,以及后面说了它们共同调用 do_fork 的实现.现在已经知道一个进程是如何创建的,但是进程 ...

  7. Linux多线程实践(1) --线程理论

    线程概念 在一个程序里的一个执行路线就叫做线程(thread).更准确的定义是:线程是"一个进程内部的控制序列/指令序列"; 一切进程至少有一个执行线程; 进程  VS. 线程  ...

  8. linux操作系统之线程

    (1)线程(LWP)   可使用命令查看指定线程的LWP号:  ps  -Lf pid 1)light weigh process(轻量级进程),本质上仍然是进程 进程:独立的地址空间,拥有PCB,最 ...

  9. Libev documentation

    2019独角兽企业重金招聘Python工程师标准>>> NAME libev - a high performance full-featured event loop writte ...

最新文章

  1. C语言:使用命令行参数用字符串读取流和输出流进行文本文件的复制
  2. Linux防火墙设置-DNS服务器篇
  3. BurpSuite插件 -- FastjsonScan(反序列化检测)
  4. Web 性能优化:使用 CSS font-display 控制字体加载和替换
  5. asp if 显示按钮_ASP.NET Core 3.1入门教程(二)
  6. Altium Designer元件库下载
  7. 小学生python游戏编程_适合刚入门Python小白的趣味游戏编程
  8. 华中科技大学计算机考研信息汇总
  9. 【19调剂】湖南师范大学2019年信息科学与工程学院硕士研究生复试(含调剂)方案...
  10. html 去除ico,去除html页面中GET《 http://localhost:8080/favicon.ico 404 (Not Found)》
  11. 阿里巴巴分布式消息系统的实践之路
  12. TensorFlow学习(三)——神经网络进阶
  13. 微信或QQ屏蔽域名,爆红域名如何在微信打开,如何进行微信域名防封?
  14. 时钟页面置换算法c语言,clock置换算法例题(改进clock置换算法例题讲解)
  15. 企业口碑营销,如何塑造全网优质口碑
  16. Android-蓝牙sco通话
  17. bugku的做个游戏(08067CTF) writeup
  18. 传输层协议------TCP协议
  19. EETOP版主后端面试问题 每日一题
  20. 编写Python爬虫爬取豆瓣出版社列表并写入文件

热门文章

  1. 40句让你坦露心声的经典句子[转载]
  2. 写作经典中的经典——《文心》的读后感作文3600字
  3. 月薪8000的出租车司机给我上了震撼一课...
  4. 视觉检测之3D视觉概述
  5. 基于java红河旅游信息服务系统计算机毕业设计源码+系统+lw文档+部署
  6. Markdown 快速入门上(基础语法篇)
  7. linux中进程与线程
  8. 解密|小游戏与H5游戏的不同之处
  9. java毕业设计美容美发店会员管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
  10. WiFi监控摄像机软件有哪些