子进程在父进程之后启动

2023-11-21

我有一个简单的代码来测试fork()功能。

    #include<stdio.h>
    #include<unistd.h>
    #define MAX_COUNT 10
    void main(void)
    {
        pid_t pid;
        int i;
        fork();
        pid = getpid();
        for(i = 1; i <= MAX_COUNT; i++)
        {
            printf("PID = %d, i = %d\n", pid, i);
        }
    }

它没有像我预期的那样工作。

我的期望是:父母的结果和孩子的结果交替出现。 有人可以解释一下这个问题并教我如何解决它吗?谢谢!

    PID = 3663, i = 1
    PID = 3663, i = 2
    PID = 3663, i = 3
    PID = 3663, i = 4
    PID = 3663, i = 5
    PID = 3663, i = 6
    PID = 3663, i = 7
    PID = 3663, i = 8
    PID = 3663, i = 9
    PID = 3663, i = 10
    PID = 3664, i = 1
    PID = 3664, i = 2
    PID = 3664, i = 3
    PID = 3664, i = 4
    PID = 3664, i = 5
    PID = 3664, i = 6
    PID = 3664, i = 7
    PID = 3664, i = 8
    PID = 3664, i = 9
    PID = 3664, i = 10

解释很简单。 进程的调度由内核决定。如果这是单核处理器,那么在这次运行中,它决定暂停子进程的执行并允许父进程首先运行。父母跑了几圈,然后被暂停以利于孩子,依此类推。
在多处理器系统中,两个进程可以同时运行,但控制台设备将根据中断时间交替输出。

无法保证不同的运行会产生相同的输出。也不能保证不同的内核版本不会做其他事情。

如果您希望进程在循环之间交替,那么现在是学习的时候了进程间通信.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子进程在父进程之后启动 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur

随机推荐

  • 使用 AXIS2 创建的 ADB 存根在客户端获取原始 XML SOAP 响应

    我使用 AXIS2 创建的 ADB 存根访问 SOAP 服务 我想记录服务返回的任何轴故障的原始 XML 响应 我可以将这些错误捕获为 ServiceError 但是 我没有找到检索原始 XML 的方法 请参见下面的示例 我找到了一种使用
  • Google Api Php 客户端的刷新令牌

    我正在使用 Google API 客户端访问 Google Analytics 我想以离线模式访问数据 所以我需要刷新令牌 如何获取刷新令牌 尝试使用以下代码
  • 多线程比单线程慢

    我有以下代码 控制台应用程序 Program cs 的完整内容 单线程执行 countUp 到 countUp4 需要 13 秒 多线程执行需要 21 秒 我有 Intel Core i5 2400 3 10 GHz 8 GB RAM Wi
  • 在 FastAPI 中从根目录提供静态文件

    我正在尝试让 FastAPI 与 Svelte 一起工作 我已经使用 Svelte 构建了静态文件 现在我尝试通过 FastAPI 提供它们 问题是构建的 Svelte 文件引用了例如global css从根目录 这意味着我不能将它们安装在
  • 在java中通过ref传递枚举

    如何在java中通过引用传递枚举参数 有什么解决办法吗 Java 总是按值传递 您传递引用 而不是对象 引用是按值传递的 您可以更改引用在传入的函数中指向的可变对象的状态 但不能更改引用本身
  • 如何在 Django/Python Web 应用程序中使用 Trac wiki 格式?

    我有一个 Python Web 应用程序 特别是 Django 我正在从 Trac 数据库中读取一些数据 其中的描述使用维基格式 并将其显示为 HTML 我考虑过 markdown 模块 但意识到 Trac wiki 格式和 markdow
  • 在 Symfony2 中异步调用命令

    我想从 Symfony2 的控制器中异步调用命令 到目前为止我找到了以下解决方案 cmd this gt get kernel gt getRootDir console new MLCJobWorkerCommand gt getName
  • 如何给tomcat设置IP地址? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一个 Tomcat 服务器 其中 war文件正在运行 我可以运行 war打字时文件本地主机 8080 在浏览器中 但我必须通过网络访问这个 war 文件 所以我有一个外部IP
  • 使用 matplotlib 显示图像序列

    我有一个简单的 python 脚本 使用 OpenCV 从文件夹加载图像并循环显示它们 我想使用重现这种效果matplotlib import cv2 as cv import os im files for f in os listdir
  • 在tomcat中绑定JNDI数据源?

    是否可以通过编程方式将数据源绑定到 Tomcat 6 JNDI 我想动态创建一个数据源 然后通过 JNDI 使其可用 例如 ColdFusion 这就是我所拥有的 public void bindToConext DataSource da
  • “找不到 Python 可执行文件...” - npm install 挂起

    我正在使用 npm install 下载并编译我编写的小型 Node js 应用程序的所有依赖项 我正在使用的 package json 文件是正确的并且包含所有需要的信息 要安装的软件包之一具有 node gyp 作为依赖项 因此我之前安
  • Spring Boot webjars:无法通过 webjar 加载 javascript 库

    我有一个 Spring Boot 我使用 Thymeleaf 进行模板化 项目 我想在其中使用一些 jQuery 库 不幸的是 webjar 根本没有加载 我尝试了很多配置 但都失败了 这是我的 HTML 页面的代码片段
  • 如何删除 VSTS 中的共享步骤

    我正在尝试以编程方式删除共享步骤 我正在尝试导出 导入 并且正在生成大量步骤 并且希望能够删除它们 而不是手动删除 一次一个 与所有 隐藏 类别工作项类型一样 无法使用删除工作项 API 删除共享步骤 测试用例 测试计划和测试套件都有特殊的
  • 使用 Docker 驱动程序启动 Minikube 并将其绑定到主机网络

    我想知道是否可以将我的 minikube 网络绑定到我的host网络 I tried minikube start memory 10000 cpus 4 vm driver docker kubernetes version v1 19
  • LinkedIn OAuth2 授权服务器遇到意外情况

    对于一些尝试通过移动设备在 Web 视图中链接的 OAuth2 API 进行身份验证的用户 我们遇到了这个奇怪的错误 https www linkedin com uas oauth2 authorization response type
  • 尝试运行 npm install 或yarn 时出现 Zlib 错误

    我刚刚从 GitHub 上的库中提取了一些内容 我正在使用 Windows 计算机在 VSCode 中进行编码 代码没有问题 尽管当我尝试运行 npm install 或yarn install 来获取node modules 和yarn
  • 从 HTML 中过滤 JavaScript

    我有一个富文本编辑器 可以将 HTML 传递到服务器 然后该 HTML 会显示给其他用户 我想确保该 HTML 中没有 JavaScript 有什么办法可以做到这一点吗 另外 如果有帮助的话 我正在使用 ASP NET 唯一的方法是ensu
  • 将Lua嵌入到C++中

    我想编写一个可以在执行期间交互 调用 Lua 脚本的 C 程序 该程序的一个关键概念是完全的平台独立性 但我似乎无法找到真正提供这种功能的 Lua 构建 到目前为止我发现的 Lua 构建要么基于环境变量 要么基于特定的库 例如 lib dl
  • 在 PHP 的类属性中存储闭包函数

    好的 我有下面的代码 你可以看到它在这里运行http co
  • 子进程在父进程之后启动

    我有一个简单的代码来测试fork 功能 include