Linux fork()函数使用教程

LINUX fork()函数用法简介

操作方法

  • 01

    在Linux 中,创建一个新进程的唯一方法是有某个已存在的进程调用fork()函数,被创建的新进程称为子进程,已存在的进程称为父进程.fork()函数的实质是一个系统调用(和write函数类似),其作用是创建一个新的进程,当一个进程调用它,完成后就出现两个几乎一模一样的进程,其中由fork()创建的新进程被称为子进程,而原来的进程称为父进程.子进程是父进程的一个拷贝,即子进程从父进程得到了数据段和堆栈的拷贝,这些需要分配新的内存;而对于只读的代码段,通常使用共享内存方式进行访问.

  • 02

    fork()的头文件 ” #include /*这是一个调用fork()函数创建子进程的实例,当创建成功之后会分别打印两者对应的进程标志符*/ #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { pid_t pid;        //进程标识符 pid = fork();     //创建一个新的进程 if(pid<0)    { printf("创建进程失败!"); exit(1); }  else if(pid==0)   //如果pid为0则表示当前执行的是子进程 printf("这是子进程,进程标识符是%d\n",getpid()); else          //否则为父进程 printf("这是父进程,进程标识符是%d\n",getpid()); return 0; }

  • 03

    我自己的运行结果: 这是父进程,进程标识符是3014 这是子进程,进程标识符是3015

  • 04

    实例二: /*这是一个调用fork()函数创建一个子进程,然后分别打印输出子进程和父进程中的变量的实例*/ #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> int glob = 6; int main(int argc,char *argv[]) { int var;    //内部变量 pid_t pid;      //文件标识符 var = 88;   //内部变量赋值 printf("创建新进程之前.\n");   //还没有创建子进程 if((pid=fork())<0)    { perror("创建子进程失败!\n"); }    else if(pid==0)    { glob++; var++; }    else    { sleep(2); //父进程阻塞两秒 }    printf("进程标识符为=%d,glob=%d,var=%d\n",getpid(),glob,var);//分别在子进程中输出两个变量的值 exit(0); }

  • 05

    运行结果: 创建新进程之前. 进程标识符为=3070,glob=7,var=89 //等待2秒 进程标识符为=3069,glob=6,var=88

(0)

相关推荐

  • Linux Shell脚本系列教程(四):使用函数添加环境变量

    这篇文章主要介绍了Linux Shell脚本系列教程(四):使用函数添加环境变量,本文对环境变量的一知识作了介绍,并给出普通添加环境变量和使用函数添加环境变量的方法,需要的朋友可以参考下 一、简介 环 ...

  • Linux下的多线程编程和fork()函数详解

     一.fork()函数 在操作系统的基本概念中进程是程序的一次执行,且是拥有资源的最小单位和调度单位(在引入线程的操作系统中,线程是最小的调度单位).在Linux系统中 创建进程有两种方式:一是由操作 ...

  • Linux Shell脚本系列教程(二):终端打印命令详解

    这篇文章主要介绍了Linux Shell脚本系列教程(二):终端打印命令详解,本文着重讲解了echo终端打英printf终端打印两个打印出输出命令,需要的朋友可以参考下 终端打印 终端是交互式工具,用 ...

  • VNC轻松连接Linux远程桌面图文教程

    VNC连接Linux桌面,要想连接Linux远程桌面,按照下面的步骤,非常简单、快速,Linux配置VNC(以RedHat、CentOS、Fedora系列为例)。 工具/原料 Linux平台安装VNC ...

  • Linux防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

  • Linux Shell脚本系列教程(七):脚本调试

    这篇文章主要介绍了Linux Shell脚本系列教程(七):脚本调试,本文讲解了Bash内建调试功能和自定义调试功能等内容,需要的朋友可以参考下 一、调试脚本 调试功能是每一种编程语言都应该实现的重要 ...

  • Linux Shell脚本系列教程(六):数组和关联数组

    这篇文章主要介绍了Linux Shell脚本系列教程(六):数组和关联数组,本文讲解了什么是数组和关联数组、定义打印普通数组、定义打印关联数组等内容,需要的朋友可以参考下 一、数组和关联数组 数组是S ...

  • Linux Shell脚本系列教程(五):数学运算

    这篇文章主要介绍了Linux Shell脚本系列教程(五):数学运算,本文讲解了使用let、(())和[]进行算术运算、使用expr进行算术运算、使用bc进行算术运算三种方法,需要的朋友可以参考下 在 ...

  • Linux Shell脚本系列教程(三):变量和环境变量

    这篇文章主要介绍了Linux Shell脚本系列教程(三):变量和环境变量,本文讲解了普通变量、获取字符串的长度、环境变量等内容,需要的朋友可以参考下 一、玩转变量和环境变量 变量是任何一种编程语言都 ...