多进程程序设计

一、函数学习

1.1 创建进程fork

1.1.1 函数原形

  pid_t fork(void);

1.1.2 函数功能

  创建一个子进程

1.1.3 所属头文件

  <unistd.h>

1.1.4 返回值

  成功:父进程返回创建成功的子进程pid子进程返回 0

  失败:父进程返回

1.1.5 参数说明

  无

1.2 创建进程vfork

1.2.1 函数原形

  Pid_t  vfork();

1.2.2 函数功能

  创建一个子进程,并阻塞父进程

1.2.3 所属头文件

  <sys/types.h>   <unistd.h>

1.2.4 返回值

  成功:父进程返回创建成功的子进程pid子进程返回 0

  失败:父进程返回 -1

1.2.5 参数说明

  无

fork和vfork对比:

  fork和vfork都可以用于创建子进程,但是也有如下不同之处:

  1. fork:子进程拥有独立的数据段,堆栈。vfork:子进程与父进程共享数据段,堆栈。

  2. fork:父、子进程的执行次序不确定vfork:子进程先运行,父进程后运行

1.3 进程等待wait

1.3.1 函数原形

  pid_t wait(int* status);

1.3.2 函数功能

  挂起调用它的进程,直到其子进程结束

1.3.3 所属头文件

  <sys/types.h>    <sys/wait.h>

1.3.4 返回值

  成功:返回终止的那个子进程id

  失败: -1

1.3.5 参数说明

  status:记录子进程退出状态

1.4 执行程序函数名execl

1.4.1 函数原形

  int execl(const char* pathname,const char*arg,…)

1.4.2 函数功能

  运行一个可执行文件

1.4.3 所属头文件

  <unsitd.h>

1.4.4 返回值

  成功:不返回

  失败:返回

1.4.5 参数说明

  Pathname:要运行的可执行文件路径

  arg:可执行文件运行需要的参数

1.5终止进程exit等同于_Exit

1.5.1 函数原形

  void _exit(int status)

1.5.2 函数功能

  终止正在调用的进程

1.5.3所属头文件

  <unistd.h>

1.5.4 返回值

  无

1.5.5 参数说明

  status被用作进城退出状态返回给父进程

  父进程退出:可以是return 0和exit退出

  子进程退出:只能是exit

多进程程序设计,王明学learn的更多相关文章

  1. linux驱动程序设计的硬件基础,王明学learn

    linux驱动程序设计的硬件基础(一) 本章讲总结学习linux设备程序设计的硬件基础. 一.处理器 1.1通用处理器 通用处理器(GPP)并不针对特定的应用领域进行体系结构和指令集的优化,它们具有一 ...

  2. 库函数系统调用文件方式,王明学learn

    库函数系统调用文件方式 基于C函数库的文件编程是独立于具体的操作系统平台的,不管是在Windows.Linux还是其他的操作系统中,都是使用这些函数.使用库函数进行程序设计可提高程序的可移植性. 对于 ...

  3. 静态/动态函数库设计,王明学learn

    静态/动态函数库设计 Linux应用程序设计中需要的外部函数主要由函数库和系统调用来提供. 两者区别: 一.函数库分类 函数库按照链接方式可分为: 1.静态链接库 对函数库的链接是放在编译时期(com ...

  4. ARM伪指令,王明学learn

    ARM伪指令 在ARM汇编语言程序中里,有一些特殊指令助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作.伪指令在元程序中的作用是为完成汇编 ...

  5. ARM指令学习,王明学learn

    ARM指令学习 一.算数和逻辑指令 1— MOV 数据传送指令    2.— MVN 数据取反传送指令    3.— CMP 比较指令    4.— CMN 反值比较指令    5.— TST 位测试 ...

  6. ARM寄存器学习,王明学learn

    ARM寄存器学习 ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器.但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式. ...

  7. 消息队列通信,王明学learn

    消息队列通信 消息队列就是一个消息(一个结构)的链表.而一条消息则可看作一个记录,具有特定的格式.进程可以从中按照一定的规则添加新消息:另一些进程则可以从消息队列中读走消息. 每一个消息都是一个结构体 ...

  8. 共享内存同行,王明学learn

    共享内存同行 一.共享内存概念 共享内存是IPC机制中的一种,它允许两个不相关的进程访问同一段内存, 这是传递数据的一种非常有效的方式. 二.函数学习 这里主要有创建共享内存.映射共享内存.分离共享内 ...

  9. 信号量进程同步,王明学learn

    信号量进程同步 一组并发进程进行互相合作.互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步. 信号量在进程同步时初始值为:0 信号量在进程互斥时初始值为:大于0的 本章节主要使用信号量,使的 ...

随机推荐

  1. SqlBulkCopy 批量复制数据到数据表

    使用 SqlBulkCopy 类只能向 SQL Server 表写入数据.但是,数据源不限于 SQL Server:可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataR ...

  2. c#.net对excel的操作——创建一个excel报表两个sheet就是2个表分别添加内容

    添加引用:Microsoft.Office.Interop.Excel //创建excel对象,就是实例化一个excel对象            Application excel=new Appl ...

  3. C#读写SQL Server数据库图片

    效果图: 下载链接: http://download.csdn.net/detail/u010312811/9492402 1.创建一个Winform窗体,窗体分为“数据上传”和“数据读取”两部分: ...

  4. 在Py文件中引入django环境

    复制manage.py中的相关代码即可并将文件置于Project文件夹(与manage.py同位置)下 示例: #! /usr/bin/env python # -*- coding:utf- -*- ...

  5. ACM/ICPC 之 数论-素数筛选法 与 "打表"思路(POJ 1595)

    何为"打表"呢,说得简单点就是: 有时候与其重复运行同样的算法得出答案,还不如直接用算法把这组数据所有可能的答案都枚举出来存到一个足够大的容器中去-例如数组(打表),然后再输入数据 ...

  6. Mathematics:Raising Modulo Numbers(POJ 1995)

    阶乘总和 题目大意:要你算一堆阶乘对m的模... 大水题,对指数二分就可以了... #include <iostream> #include <functional> #inc ...

  7. Android 启动白屏或者黑屏闪现解决

    1.设置Style //1.设置背景图Theme <style name="Theme.AppStartLoad" parent="android:Theme&qu ...

  8. 火狐----此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。

    FirFox打开80以外的端口,会弹出以下提示: “此地址使用了一个通常用于网络浏览以外的端口.出于安全原因,Firefox 取消了该请求.”.经网上搜索,解决方法如下: 在Firefox地址栏输入a ...

  9. Python简易聊天工具-基于异步Socket通信

    继续学习Python中,最近看书<Python基础教程>中的虚拟茶话会项目,觉得很有意思,自己敲了一遍,受益匪浅,同时记录一下. 主要用到异步socket服务客户端和服务器模块asynco ...

  10. iOS开发之Xcode 相对路径与绝对路径

    iOS开发之 相对路径与绝对路径 https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/Xcod ...