一、进程产生的方式

  1.描述进程的ID号通常叫做PID,即进程ID,PID的变量类型为pid_t。

  2.getpid(void)返回当前进程的ID号,getppid(void)返回当前进程的父进程的ID号。

  3.fork()函数以父进程为蓝本复制一个进程,其ID号和父进程ID号不同,父进程中返回的是子进程的ID号,而子进程中则返回0。

  4.system()调用shell命令,阻塞当前进程直到命令执行完毕。

  5.exec()族函数会用新进程代替原有的进程,系统会从新的进程运行,新进程的PID值会与原来进程的PID值相同。

  6.init进程是所有进程的祖先,其他的进程都是由init进程直接或者间接fork()出来的。

  二、进程间通信和同步

  1.半双工通道

  (1)管道是一种把两个进程之间的标准输入和标准输出连接起来的机制,由于管道仅仅是将某个进程的输出和另一个进程的输入相连接的单向通信的办法,因此称其为“半双工”。在shell中用“|”表示。建立管道:pipe(fd)。

  2.命名通道(FIFO)

  (1)命名管道和普通管道的区别是在文件系统中命名管道是以设备特殊文件的形式存在;不同的进程可以通过命名管道共享数据。

  (2)C语言创建FIFO,可以使用mkfifo()函数。

  3.消息队列

  (1)消息队列是内核地址空间中的内部链表,通过Linux内核在各个进程之间传递内容。

  4.信号量

  (1)信号量是一种计数器,用来控制对多个进程共享的资源所进行的访问。它们常常被用作一个锁机制,在某个进程正在对特定资源进行操作时,信号量可以防止另一个进程去访问它。生产者和消费者的模型是信号量的典型使用。

  5.共享内存

  (1)共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,它是在多个线程之间对内存段进行映射的方式实现内存共享的。

  6.信号

  (1)信号机制是UNIX系统中最为古老的进程之间的通信机制。它用于在一个或多个进程之间传递异步信号。

  三、Linux下的线程

  与传统的进程相比较,用线程来实现相同的功能有如下优点:①系统资源消耗低②速度快③线程间的数据共享比进程间容易得多

  (1)函数pthread_create()用来创建一个线程,调用时传入的参数有线程属性、线程函数、线程函数变量,用于生成一个某种特性的线程,线程中执行线程函数。

  (2)函数pthread_join()用来等待一个线程运行结束,这个函数是阻塞函数,一直等到被等待的线程结束为止,函数才返回并且收回被等待线程的资源。

  (3)函数pthread_exit()用来结束一个线程,并将结果传出。

  

最新文章

  1. 基于Java Mina框架的部标808服务器设计和开发
  2. MS CRM 2013 Plugin 注册工具登录后空白
  3. Icon Font浅谈
  4. Jquery 进度条集锦
  5. xcode7 icon图标设置
  6. Nagios显示器MySQL一个错误:NRPE: Unable to read output具体的解决过程
  7. JS获取网页中HTML元素的几种方法分析
  8. 重启oracle数据库的一次操作命令和alter日志。
  9. C#中BASE64和图片相互转换
  10. 蓝桥网试题 java 基础练习 数列排序
  11. Python:python抓取豆瓣电影top250
  12. 获取Type的三种方式
  13. 洛谷P1040 加分二叉树(树形dp)
  14. Windows Update Medic Service 拒绝访问
  15. mongo官方企业版安装及数据库授权使用
  16. 人生苦短之---认识Python
  17. linux中awk的使用
  18. 从输入url到页面展示到底发生了什么
  19. 非常酷的jQuery/HTML5图片滑块特效 带弹性菜单
  20. ArcGIS案例学习笔记3_2

热门文章

  1. 关于webpack
  2. CreateFolder
  3. 读《深入理解Elasticsearch》点滴-查询评分
  4. 基于SpringBoot + Mybatis实现 MVC 项目
  5. springboot系列之04-提高开发效率必备工具lombok
  6. echarts使用——柱状图
  7. 设计模式----创建型模式之工厂模式(FactoryPattern)
  8. centos7版本以上root密码破解
  9. github代码仓库提示:“We found a potential security vulnerability in one of your dependencies”
  10. .Net下MoongoDB的简单调用