进程标识和函数fork和函数和vfork(UNIX环境高级编程笔记)

2024-03-30 03:48

本文主要是介绍进程标识和函数fork和函数和vfork(UNIX环境高级编程笔记),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

进程标识

  每个进程都有一个非负整数表示的唯一进程ID。
  虽然进程ID是唯一的,但是进程ID是可以复用的。
  系统中有一些专用进程,但具体细节随着实现而不同。ID为0的进程通常为调度进程,常常被称为交换进程(swapper)。该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也常常被称为系统进程。进程ID为1的通常是init进程,在自举过程结束时由内核调用。init通常读取与系统有关的初始化文件,并将系统引导到一个状态(如多用户)。init进程绝不会终止。它是一个普通的用户进程,但是它以超级用户特权运行。

函数fork

  一个现有进程可以通过fork函数创建一个新进程。

#include <unistd.h>
pid_t fork(void);
      返回值:子进程返回0,父进程返回子进程ID,若出错,返回-1

  由fork函数创建的新进程被称为子进程(child process)。fork函数调用一次,返回两次。在子进程中fork返回0,在父进程返回子进程的进程ID。
  子进程和父进程继续执行fork调用之后的指令。子进程是父进程的副本。子进程和父进程共享正文段。
  现在很多实现并不执行一个父进程数据段、栈和对的完全副本。作为替代,使用了写时复制(Copy-on-Write,COW)技术。这些去区域由父进程和子进程共享,而内核将它们的访问权限改变为只读。如果父进程或者子进程中试图修改这些区域,则内核只为修改区域的那块内存制作一个副本。
  一般来说,在fork之后是先执行父进程还是子进程是不确定的,这取决于内核使用的调度算法。

  fork之后子进程和父进程的文件共享

  使fork失败的两个主要原因是(a)系统中已经有了太多的进程。(b)该实际用户ID的进程总数超过了系统限制。

  函数vfork

  vfork函数用于创建一个新进程。在子进程调用exec或exit之前,子进程会在父进程的空间中运行。
  vfork函数保证子进程先运行,在它调用exec或exit之后父进程才可能被继续调度运行。

这篇关于进程标识和函数fork和函数和vfork(UNIX环境高级编程笔记)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/860400

相关文章

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使