• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

cynchanpin

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

1.Linux进程--进程标识号

函数原型

pid_t fork(void);

fork的奇异之处在于它被调用一次,却返回两次,它可能有三种不同的返回值:
1、在父进程中。fork返回新创建的子进程的PID
2、在子进程中,fork返回0。
3、假设出现错误,fork返回一个负值。

用途:
1、一个进程希望复制自身。从而父子进程能同一时候运行不同段的代码。


2、进程想运行另外一个程序

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

int main(){
    pid_t pid;

    /*此时仅有一个进程*/
    pid = fork();

    /*此时已有两个进程在同一时候运行*/
    if( pid < 0)
        printf("error in fork!\n");
    else if(pid == 0)
        printf("I am the child process, ID is %d\n",getpid());
    else
        printf("I am the parent process, ID is %d\n",getpid());
    return 0;
}

在 pid = fork() 之前,仅仅有一个进程在运行,但在这条语句之后。就变成两个进程在运行了,这两个进程共享代码段。将要运行的下一条语句就是 pid = fork() 之后的语句。两个进程中,原来就存在的那个进程被称作为”父进程”,新出现的那个进程被作为”子进程”,父子进程的差别在于进程标识符(PID)不同。
子进程的数据空间、堆栈空间都会从父进程得到一个拷贝,而不是共享。

pid_t vfork(void);

1、在父进程中,fork返回新创建的子进程的PID
2、在子进程中。fork返回0。
3、假设出现错误,fork返回一个负值。

用途:
用vfork创建的进程主要目的是用exec函数族运行另外的程序,与fork的第二个用途同样

fork 和 vfork 的差别
fork:子进程拷贝父进程的数据段。堆栈。
vfork:子进程与父进程共享数据段,堆栈。

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

阅读全文
版权声明:本文为博主原创文章。未经博主同意不得转载。

  • 本文已收录于下面专栏:

Linux C编程--进程介绍1--进程的创建

这篇文章介绍的内容包含 1.Linux进程--进程标识号 2.进程控制--进程创建 1.Linux进程--进程标识号 进程(Process)是一个程序在其自身的虚拟地址空间...
  • DLUTBruceZhang
  • DLUTBruceZhang
  • 2013年03月02日 19:46
  • 2239

Linux C进程与多线程入门—(1)创建进程

本文出自http:http://www.wenbanana.com/?p=351稻草人博客,欢迎訪问。  进程和程序的差别 进程和程序的差别能够理解为,进程是活动的程序,而程序是一个代...
  • wen294299195
  • wen294299195
  • 2013年01月28日 15:14
  • 2031

LINUX shell和进程创建

一、在LINUX系统中须要用到shell来执行命令。那么shell究竟是什么?        维基百科:Unix shell也叫做命令行界面,它是Unix操作系统下传统的用户和计算机的交互界面。用户...
  • mxg1991
  • mxg1991
  • 2014年04月28日 21:25
  • 1298

linux C 守护进程及其创建

涉及的概念: 守护进程:在linux或者unix操作系统中在系统引导的时候会开启非常多服务,这些服务就叫做守护进程。为了添加灵活性,root能够选择系统开启的模式。这些模式叫做执行级别。每一种执行级别以...
  • u010927811
  • u010927811
  • 2013年07月24日 11:10
  • 814

Linux C创建守护进程(daemon)及终端相关概念

引言         所谓守护进程(daemon),是不具备控制终端的,经常是在系统引导装入时启动,仅在系统关闭时才终止,输出的报告信息一般在日志文件。

        守护进程没有控制终端通常源...

  • Jammg
  • Jammg
  • 2016年04月06日 12:13
  • 898

linux c之创建进程fork和vfork函数之间的差别

1、函数简单介绍       1)、得到当前的进程id pid_t getpid();       2)、fork函数          要创建进程。必须调用fork函数, 系统调用for...
  • u011068702
  • u011068702
  • 2017年01月12日 20:36
  • 415

linux c之管道的介绍、创建关闭和简单读写(父进程向子进程写入数据)

1、管道介绍、        进程间通信的几种主要手段中。

当中管道和有名管道是最早的进程间通信机制之中的一个,管道可用于具有亲缘关系进程间的通信。有名管道克服了管道没有名字的限制,因此。除具       ...

  • u011068702
  • u011068702
  • 2017年02月07日 20:01
  • 1217

Linux C编程--进程介绍1--进程的创建

这篇文章介绍的内容包含 1.Linux进程--进程标识号 2.进程控制--进程创建 1.Linux进程--进程标识号 进程(Process)是一个程序在...
  • oLinXi1234567
  • oLinXi1234567
  • 2014年04月23日 12:24
  • 237

Linux C进程与多线程入门—(1)创建进程

本文出自http:http://www.wenbanana.com/?p=351稻草人博客。欢迎訪问!

  进程和程序的差别 进程和程序的差别能够理解为,进程是活动的程序。而程序是一个代...

  • wen294299195
  • wen294299195
  • 2013年01月28日 15:14
  • 2031

Linux c进程管理—创建进程 system、execl、execlp、fork

Linux c 进程管理:   1.      创建进程:        system函数:         int system(const char*filename);             ...
  • Y_23k_bug
  • Y_23k_bug
  • 2013年08月10日 21:56
  • 6669

u011641885

+关注
原创
307
粉丝
38
喜欢
2
码云
 

他的最新文章

很多其它文章
  • Linux 程序设计中由线程使用不当引起的内存泄露
  • 挂载 4G 网卡上网
  • doxygen 配置说明
  • 搭建 openwrt 本地源
  • openwrt 更改默认固件大小

文章分类

  • Linux C++
    3篇
  • Linux
    78篇
  • 游戏开发相关
    1篇
  • 数据库
    7篇
  • 虚拟机
    11篇
  • Shell 脚本
    15篇
  • linux命令
    51篇
  • UNIX环境高级编程源程序整理与分析
    6篇
  • OpenWrt
    41篇
  • 网络相关
    7篇
  • Makefile学习整理
    7篇
  • Perl
    11篇
  • Linux C
    72篇
  • 查看电路图的方法
    1篇
  • S3C2440
    12篇
  • HTML
    7篇
  • RHCE
    12篇
展开

文章存档

  • 2017年9月
    1篇
  • 2016年10月
    1篇
  • 2016年3月
    1篇
  • 2016年1月
    7篇
  • 2015年12月
    13篇
  • 2015年11月
    12篇
  • 2015年10月
    15篇
  • 2015年9月
    27篇
  • 2015年8月
    32篇
  • 2015年7月
    70篇
  • 2015年6月
    49篇
  • 2015年5月
    45篇
  • 2015年4月
    26篇
  • 2015年3月
    9篇
  • 2014年9月
    1篇
展开

他的热门文章

  • Linux下/etc/shadow文件
    10619
  • linux 清除 arp 缓存
    7890
  • linux 命令之jq
    7889
  • ubuntu 安装libcurl库
    7536
  • openwrt U盘热插拔自己主动挂载
    5790

联系我们

  • 站点客服
  • 微博客服
  • webmaster@csdn.net
  • 400-660-0108

京ICP证09002463号

关于|招聘|广告服务

ali

Copyright © 1999-2018

CSDN.NET, All Rights Reserved

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux c 创建进程
举报原因:
原文地址:
原因补充:

(最多仅仅同意输入30个字)

posted on 2018-01-10 12:17  cynchanpin  阅读(599)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3