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

推荐订阅源

Y
Y Combinator Blog
博客园_首页
雷峰网
雷峰网
V
V2EX
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
T
Tailwind CSS Blog
小众软件
小众软件
博客园 - 叶小钗
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
MyScale Blog
MyScale Blog
Blog — PlanetScale
Blog — PlanetScale
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
H
Help Net Security
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 函数。