目录

进程

fork()函数

ps -ef命令的使用

top命令的使用

进程创建——fork()函数

例题一

例题二

例题三

进程

进程是操作系统中最重要的概念之一。在计算机系统中,进程不仅是最基本的并发执行单位,而且也是分配资源的基本单位。从进程观点出发,对计算机系统进行结构设计,也是软件开发的一种新技术。

进程是对正在运行程序的抽象,其最基本的属性是动态性和并发性,我们将进程定义为程序在并发环境中的执行过程。程序是静态、被动的概念,本身可以作为一种软件资源长期保存。进程是程序的一次执行过程,是动态、主动的概念,有一定的生命周期,会动态的产生和消亡。

fork()函数

一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。

一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。

        ps -ef命令的使用

UID:指用户的ID号,实际显示的是系统中的用户名

PID:该进程的ID号

PPID:该进程的父进程的ID

C:该进程所占用CPU的百分比

STIME:进程被触发启动到现在的时间

TTY:该进程所运行的终端,若与终端无关,则显示“?”

TIME:该进程实际使用CPU运行的时间

CMD:命令的名称和参数。

top命令的使用

PID:进程的ID号,是进程的唯一标识符

USER:该进程的用户名

PR:进程的优先级,范围为0-39,优先数越小优先级越高

NI:指nice值,范围为-20~19,负值表示高优先级,正值表示底优先级。在top中PR-NI=20。默认启动一个进程,nice值是0

VIRT:该进程占用的虚拟内存

RES:该进程占用的物理内存

SHR:该进行使用的共享内存

S:表示该进程的状态,S表示休眠,R表示正在运行

%CPU:从上一次更行到当前任务所占用CPU的百分比

%MEM:进程使用的物理内存和总内存的百分比

TIME+:该进程启动后占用总的CPU时间,即占用CPU使用时间的累加值,精确到百分之一秒

进程创建——fork()函数

fork()函数用来创建一个新进程。系统调用格式:

 pid_t pid;pid=fork();

②如果fork()调用成功,它向父进程返回子进程的pid,并向子进程返回0fork()被调用了一次,但返回两次。此时操作系统在内存中创建一个新进程,所建的新进程是调用fork()父进程的副本,称为子进程。父进程与子进程并发执行。

③子进程完全复制了父进程地址空间的内容。当它并没有复制代码段,而是和父进程共用代码段,这样做是合理的。由于子进程可能执行不同的流程,会改变数据段和堆栈段,但是代码是只读的,不存在被修改的问题,因此,可以共用

例题一

每个进程输出ABC一次,要求共输出5ABC

#include<stdio.h>
#include<unistd.h>
int main(){int p1;p1=fork();if(p1==0){fork();fork();}printf("ABC\n");while(1);return 0;
}

例题二

使用fork()创建两个子进程,实现当此程序执行时,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示输出内容,父进程为“A”,子进程分别为“B”和“C

#include<stdio.h>
#include<unistd.h>
int main(){int p1;int i;for(i=0;i<2;i++){p1=fork();if(p1==0||p1==-1){break;}}if(p1==0){if(i==0){printf("woshizijincheng1-----B\n");}if(i==1){printf("woshizijincheng2-----C\n");}}else{printf("woshifujincheng1-----A\n");}return 0;
}

例题三

子进程创建之前:pid为1134

子进程创建之后:pid为1134,fork返回值为1135

子进程创建之后:pid为1135,fork返回值为0

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(){pid_t pid; //获得父进程pidprintf("子进程创建之前:pid为%d\n", getpid());//创建子进程pid=fork();if(pid==-1){perror("fork() error!\n");exit(1);}//父进程返回子进程的pid,子进程返回0printf("子进程创建之后:pid为%d,fork返回值为%d\n", getpid(), pid);sleep(3);return 0;
}

linux操作系统-----Fork()函数相关推荐

  1. Linux中fork()函数详解

    Linux中fork()函数详解 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事, ...

  2. [入门篇]Linux操作系统fork子进程的创建以及进程的状态 超超超详解!!!我不允许有人错过!!!

    目录 0.前言 1.fork()创建子进程讲解 1.1fork()的简单介绍 1.2 创建子进程详解 1.2.1 如何理解fork创建子进程 1.2.2 子进程的PCB以及子进程的代码和数据 1.2. ...

  3. Linux下fork()函数

    Linux下的fork()函数是系统调用不是C语言内置的库函数,这里mark一下笔试面试中常出现的fork()试题. 程序一: #include "stdio.h" #includ ...

  4. Linux多进程拷贝fork,浅析linux中fork函数

    Linux通过clone()系统调用实现fork().vfork()和__clone()库函数创建新的进程,这个调用通过一系列的参数标志来指明父子进程的共享资源,终将各自的参数标志位传递给clone, ...

  5. Linux中fork函数详解

     一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程, 也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不 ...

  6. linux中fork函数及子进程父进程执行顺序

    目录 一.fork入门知识 二.fork进阶知识 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以 ...

  7. 操作系统---fork函数解析与例题详解

    fork的基本知识 函数原型:pid_t fork( void); 返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID:否则,出错返回-1 一个现有进程可以调用fork函数创建一 ...

  8. linux 的fork函数原型,浅析fork()和底层实现

    记得以前初次接触fork()函数的时候,一直被"printf"输出多少次的问题弄得比较晕乎.不过,"黄天不负留心人".哈~ 终于在学习进程和进程创建fork相关 ...

  9. Linux的fork函数和进程替换

    文章目录 一.fork函数 1.使用fork建立子进程 2.fork后 不同进程中的同一变量的虚拟地址 写时拷贝 二.进程替换 一.fork函数 在Linux中,fork函数具有非常重要的作用:它可以 ...

最新文章

  1. RecyclerView 刷新的时候出现阴影的处理方法
  2. object.ReferenceEquals(a,b)
  3. LMAX Disruptor – High Performance, Low Latency and Simple Too 转载
  4. [javaSE] 多线程(join方法)
  5. deactivate_sending在创建新的table entry时的作用
  6. Log4j2解决方案与复现略图
  7. 【BZOJ1934】【codevs2341】善意的投票,二分图最小割
  8. 字符串转数组的几种方法和字符串的截取
  9. 拓端tecdat|R语言:EM算法和高斯混合模型的实现
  10. python数据分析numpy_Python数据分析之numpy学习(一)
  11. 下载UBUNTU的可用链接
  12. vue实现一个移动端屏蔽滑动的遮罩层
  13. SQL Server 2005 在64位win7操作系统下的安装及问题总结
  14. 计算机信息的应用安全中心在哪,怎么通过windows安全中心扫描出当前具有威胁的应用...
  15. Linux触摸板设置
  16. 厘摩(centimorgan,cM)到底是啥鬼
  17. 成绩不高?校园招聘了解一下!春招公司大全!
  18. 单片机c语言报错_asm啥意思,SPMC75系列单片机地C和ASM( - 控制/MCU - 电子发烧友网...
  19. 业余草:《名博是怎样炼成的》经典语句整理
  20. 作为一个在校大学生,是否有必要参加计算机培训班?

热门文章

  1. English-英语音标
  2. 人工智能大模型多场景应用原理解析
  3. 思科 计算机网络 第二章测试答案
  4. 国内7款API供应平台功能对比及详细介绍
  5. python 柱状图和折线图放在一起_Python matplotlib:matplotlib绘制——柱状图和折线图的组合...
  6. matlab 作图所用特殊符号及希腊字母总结
  7. 机器视觉毕业设计 python车牌识别系统 - opencv 深度学习 机器学习
  8. java policy_java.policy文件格式及用法详解
  9. 雷军视频号连续直播192小时,你看懂了吗?
  10. Flink 源码解析2--JobGraph的生成