惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
博客园 - Franky
GbyAI
GbyAI
B
Blog
WordPress大学
WordPress大学
D
Docker
小众软件
小众软件
月光博客
月光博客
博客园 - 【当耐特】
T
The Blog of Author Tim Ferriss
IT之家
IT之家
腾讯CDC
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
H
Help Net Security
M
MIT News - Artificial intelligence
L
LangChain Blog
云风的 BLOG
云风的 BLOG
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - 咸着的鱼25

环境才是 Agent 的核心基础设施 OpenCode + OpenSpec + Oh-My-OpenCode 联合 SDD/ATDD 开发指南 AI 驱动开发工作流:OpenCode + Oh-My-OpenCode + SDD + ATDD 在线服务数据压缩算法比较 延迟深度链接 搭建wiki系统后端存储-来自大模型 广告投放名词 java spring IoC原理 c++ 代码技巧 c++ 性能分析 粗排治理之性能优化 MMR 算法优化 core 基本操作 聊天室开发心得 Docker 学习笔记 Airflow 使用简介 lua转换etcd应答 修改系统参数 https学习笔记 openresty: nginx worker不同请求之间共享数据
面试题1
咸着的鱼25 · 2024-01-31 · via 博客园 - 咸着的鱼25

面试题

问题:下面这段代码会输出多少次 hello ?

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

void test() {
  fork() && fork() && fork() && sleep(10);
  printf("hello\n");
  exit(0);
}

int main() {
  test();
  return 0;
}

先说下答案:4 次

我本地测试的结果:

hello
hello
hello
# sleep(10)
hello

解析

这道题的考点是 fork 函数和 && 操作符。

  • fork 函数用来复制一份主程序,即创建主进程的子进程。一次 fork 会返回两次值,主进程返回子进程的进程ID,子进程中返回0。
  • && 两边都为 true 时,整个运算结果才为 true。具有短路功能,即第一个表达式为 true 时,则不再计算第二个表达式。

所以,主进程中,会逐个执行三次 fork,并sleep(10)。子进程中,&& 操作短路,直接执行 printf 函数。