Qt/QML编程之路:fork、vfork、exec、clone的对比及使用(46)

前言:

系统调用system call是OS提供的服务提供接口。系统调用fork()、vfork()、exec()和clone()都用于创建和操作进程。Linux下Qt编程也会用到vfork进行多进程间通信。让我们看一下以下每个系统调用的概述和比较:

fork()、vfork()和clone()的工作原理相似,但在处理数据的方式上略有不同。
vfork()系统调用被认为是过时的,最好使用fork()系统调用,特别是因为它具有写时复制功能。
 

fork

进程执行fork()系统调用以创建新的子进程。
执行fork()调用的进程被称为父进程。创建的子进程接收唯一的进程标识符(PID),但保留父进程的PID作为其父进程标识符(PPID)。子进程与其父进程具有相同的数据。但是,这两个进程都有单独的地址空间。创建子进程后,父进程和子进程同时执行。它们在fork()系统调用之后执行下一个步骤。由于父进程和子进程具有不同的地址空间,对一个进程所做的任何修改都不会反映在另一个进程上。后来的改进引入了写时复制机制,允许父进程和子进程共享相同的地址空间。这消除了将数据复制到子进程的需要。如果任何进程修改共享地址空间中的页面,系统会分配一个新的地址空间&

相关推荐

  1. Qt/QML编程:线程Slot指针传递(47)

    2024-03-12 04:46:04       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-12 04:46:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-12 04:46:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-12 04:46:04       82 阅读
  4. Python语言-面向对象

    2024-03-12 04:46:04       91 阅读

热门阅读

  1. oracle 19c数据库联机备份与恢复

    2024-03-12 04:46:04       43 阅读
  2. 一些使用 Golang 实现的反沙箱技术 - Anti-Sandbox-Go

    2024-03-12 04:46:04       37 阅读
  3. OpenCV-环境搭建及基本IO接口

    2024-03-12 04:46:04       40 阅读
  4. 96.Go设计优雅的错误处理(带堆栈信息)

    2024-03-12 04:46:04       38 阅读
  5. Vue 双向数据绑定

    2024-03-12 04:46:04       40 阅读
  6. 开发指南002-前后端信息交互规范-返回值定义

    2024-03-12 04:46:04       49 阅读
  7. 常用的推荐算法

    2024-03-12 04:46:04       46 阅读