涉及 fork() 的 C 程序输出的解释

2023-12-03

运行这个程序会打印“forked!” 7次。谁能解释一下如何“分叉!”被打印了7次?

#include<stdio.h>
#include<unistd.h>

int main(){

  fork() && fork() || fork() && fork();

  printf("forked!\n");

  return 0;
}

这里使用了几个概念,第一个是知道什么fork在某些情况下它会做什么以及会返回什么。很快,当它被调用时,它会创建调用者的重复进程并返回0 (false对于逻辑表达式)在子进程中且非零(true对于逻辑表达式)对于父进程。 实际上,如果发生错误,它可能会返回负(非零)值,但这里我们假设它总是成功。

第二个概念是逻辑表达式的短路计算,例如&& and ||, 具体来说,0 && fork() will not call fork(),因为如果第一个操作数是false(零),那么就不需要计算第二个。相似地,1 || fork()不会打电话fork()两者都不。

另请注意,在子进程中,表达式的计算在与父进程中相同的点继续。

另请注意,由于优先级,表达式按以下顺序计算:

(fork() && fork()) || (fork() && fork())

这些观察应该会引导您得出正确的答案。

考虑以下简化示例fork() && fork()

   fork()        
  /     \
false   true && fork()
                /   \
             false  true

所以这里我们创建了三个进程,其中两个返回false结果一返回true。那么对于||我们有所有进程返回false尝试再次运行相同的语句,所以我们有2 * 3 + 1 = 7作为答案。

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

涉及 fork() 的 C 程序输出的解释 的相关文章

  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的
  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 私有模板函数

    我有一堂课 C h class C private template
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • 封装在JavaScript中,存在吗?

    我有使用 C 编程语言的经验 但现在我还必须使用 JS 它对我来说相当新 我尝试用 JS 开发一个简单的类模拟 如下所示 http jsfiddle net T74Zm function A inputValue this Init inp
  • 如何让 rake 任务在 dev 以外的环境中运行?

    我有一台具有特殊 暂存 环境的暂存机 我总是忘记在该机器上运行 rake 任务 例如 rake jobs work RAILS ENV staging 所以我最终做了 rake jobs work 然后我很困惑为什么我的数据库中没有任何变化
  • pygame中.quit和.QUIT有什么区别

    我只是想知道之间的区别 quit and QUIT在 pygame 我已经测试了两者 但我仍然不明白它们是如何工作的 QUIT是事件类型的枚举常量 参见event模块 quit 事件在 pygame 窗口关闭时发生 for event in
  • Google App Engine python 入站邮件 LookupError:未知编码

    我按照示例使用 标准 入站邮件处理程序接收发送到我的 Google App Engine 应用程序的入站电子邮件在文档中 似乎发送到应用程序的某封电子邮件 不是由我发送 导致电子邮件 api 抛出 LookupError 未知编码异常 请参
  • 使用 jQuery 在浏览器调整大小时更改图像 src

    我有两张不同尺寸的图像 一张适用于小于 759px 的屏幕 另一张适用于大于 759px 的屏幕 我已经设法在文档加载时根据窗口宽度更改图像的来源 但我真的希望能够在调整浏览器大小时执行此操作 但在我的一生中 我无法让它执行此操作 它似乎只
  • 图像处理以去除线条

    我试图最终得到一张只有文本的图像 我的代码会将此图像视为灰度 并从中删除所有长线以及除文本 符号 测量值之外的所有内容 Is this something that can be accomplished using image proce
  • 如何从Oracle SQL中的字符开头删除定义的值?

    我在 Oracle SQL 中有如下表 col1 ABC 1234 ABC 55674 ABC 11 所以我在 col1 中有 总是 ABC 在每个值的开头 ABC 后不同长度的值 我需要如下结果 所以我需要删除 ABC 从每个值的开头 c
  • Pyparsing:获取结果名称中的标记位置

    我正在开发一个使用 pyparsing 解析命令行的程序 它使用 readline 库来提供命令编辑和完成 在应用程序的上下文中 有效的命令行是path 可选 然后是命令名称 可选 和一些参数 也是可选的 为了提供命令完成 应用程序解析命令
  • htmlspecialchars 和 mysql_real_escape_string 是否可以保护我的 PHP 代码免受注入?

    今天早些时候有人问了一个关于Web 应用程序中的输入验证策略 在撰写本文时 最佳答案建议PHP只是使用htmlspecialchars and mysql real escape string 我的问题是 这总是足够的吗 还有更多我们应该知
  • 如何从数组中删除所有数字?

    我正在尝试从数组中删除所有数字 该循环完全按照我想要的方式工作 但 splice 方法仍然由于某种原因跳过一些元素 let arr 1 2 3 4 5 notanumber 6 for let element of arr let inde
  • 使用 python os.rename 时出现错误 [183]

    这是我第一次使用 python 我一直遇到错误 183 我创建的脚本在网络中搜索所有 py 文件并将它们复制到我的备份驱动器 请不要嘲笑我的剧本 因为这是我的第一个剧本 我在脚本中做错了什么有什么线索吗 import os import s
  • 防止 ansible 在通过 with_items 传递时解析字符串

    我正在尝试使用with items指定要传递给自定义 ansible 模块的键 值对列表 当键或值字符串具有类似列表的格式时 就会出现问题 例如 a b c d 在这种情况下with items大概将字符串转换为列表并对我的配置造成严重破坏
  • 为什么不从 Enum> 扩展

    我偶然发现了以下问题 我无法从 Java 1 5 java lang 包 中定义的此类扩展和实现 public abstract class Enum
  • Pandas 到 timedelta 只有小时、分钟和秒

    在我的脚本中 我提取了一个 Excel 其中名为 Time 的列是 dtype 对象 该列中有一个像 14 00 00 这样的小时 我想将该列转换为 datetime 但是当我这样做时 df Time pandas to datetime
  • Jfreechart注释消失

    我用 JFreechart 绘制了一条曲线 然后用户可以通过拖动鼠标来绘制范围 我使用 AbstractChartAnnotation 绘制这些图来绘制填充的 Path2D 到目前为止一切都很好 一切都与曲线完美对齐 当某个区域已被注释时
  • Django user.is_authenticated 在某些地方有效,在其他地方无效

    在我的模板中 我有以下内容 ul class tabbed if user is authenticated li a href My Account a li li a href Log Out a li else li a href L
  • 将变量从 php 文件传递​​到 anther

    如何将变量从 php 文件传递 到另一个文件 而它不是 html 输入 只是我有一个引用另一个文件的链接 并且我想将变量或值传递给它 Example 文件1 php 文件2 php Use sessions存储需要在多个请求中保留的任何小值
  • 如何使用 cin 实现单行整数类型命令行输入验证?

    我有一个程序要求用户输入 0 2 范围内的整数 我使用以下链接作为指南 使用 cin C 进行良好的输入验证循环 但是 当用户按 Enter 键而不输入数据时 光标只会转到命令提示符中的下一行 而我更希望它提示用户输入有效数字 在这种情况下
  • 现有连接被远程主机强制关闭

    我正在使用一个商业应用程序 该应用程序抛出 SocketException 消息 现有连接被远程主机强制关闭 这种情况发生在客户端和服务器之间的套接字连接上 连接状态良好 并且正在传输大量数据 但随后突然断开连接 有人见过这个吗 原因可能是
  • 涉及 fork() 的 C 程序输出的解释

    运行这个程序会打印 forked 7次 谁能解释一下如何 分叉 被打印了7次 include