vfork为什么会出现死循环

OJ判题核心实现(获取时间消耗、空间消耗)wait4、vfork实现 判题需要几个步骤: 1.在linux搭建编译器环境:gcc g++ java python2 python3 pascal 2.根据源码的类型创建相应的源文件(.c .cpp .java 等) 3.编译对应的源文件 4.运行程序,使用测试用例测试得出时间消耗和内存消耗。 步骤中其实最难的就是第四步,怎么获得程序的时间消耗和空间消耗?有个思路:开线程运行该程序得到进程pid,然后主线程开个... 阅读详情
 
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
 pid_t id;
 id=vfork();

 if(id==-1)
  return -1;

 if(id==0)
 {
  printf("%d:%d:%d\n",getpid(),getppid(),id);
  //exit(0);

 }

 if(id>0)
 {  //wait(NULL);
   printf("%d:%d:%d\n",getpid(),getppid(),id);
 }

 return 0;

}


 

嵌入式-进程、线程 fork()代码演示了使用fork()系统调用在Linux环境中创建子进程的过程,并在父进程和子进程中分别执行了不同的代码块。原代码中存在一个潜在的问题:在父进程的代码块之后有一个死循环while(1);在实际应用中,通常不会让父进程进入死循环,而是根据需求进行后续处理或等待子进程结束。 阅读详情

相关推荐

【回眸】Linux内核(八)Vfork()API用法

vfork()API与fork()API的区别

啤酒鸭的物联网开发记录博客 326

fork and vfork

在计算机系统中,特别是类unix的操作系统,fork函数用来创建一个进程对自己的的拷贝 通常它是一个系统调用,在内核中实现。在类unix系统中fork是一个主要的创建进程的方法 (历史上是唯一的)。 在多任务的操作系统中,进程需要一个方法创建新的进程。fork函数和它的变种是典型的唯一的实现了该功能在类unix系统中。为了让一个进程开始执行一个不同的程序,它首先分裂自己的一个副本。副本叫做子进

sxw1002的专栏 534

拆解特斯拉Optimus的关节技术:谐波减速器在仿人机器人中的5个精妙设计

本文深度解析特斯拉Optimus仿人机器人关节中的谐波减速器技术,揭示其五大工程突破:微型化材料革命、两万分之一圈精度实现、碳纤维柔轮轻量化、智能运维系统及国产替代方案。重点探讨谐波减速器如何通过创新设计和先进材料实现精准传动,为仿人机器人提供高效可靠的关节动力解决方案。

omega的博客 1075

fork函数

与vfork的区别?

hey Man 592

MD01和MD01N比较

摘要:MD01(传统MRP)与MD01N(MRP Live)是SAP系统不同版本的物料需求计划事务码。核心差异包括:MD01N取消MRP列表、简化计划规则、合并MPS/MRP操作、采用BAdI技术等,体现S/4HANA平台简化、标准化和智能化的演进方向。MD01N通过优化参数配置、增强筛选功能、利用HANA实时计算能力,实现了更高效的物料计划流程,代表了新一代计划引擎的技术革新。

SAP_LES_COM的博客 891

关于笔记本测试的面试准备 2021-10-11

** 关于笔记本测试的面试准备 ** 一、根据JD分析,工作内容以软测为主,硬件知识需要了解一点。 以下几个问题为主要: 1.了解VGA、audio、wlan、bt、TP 、camera等driver,BIOS和image测试。 2.了解性能测试工具?压力测试相关设置? 3.了解preload流程? 二、解决 VGA: video graphics array ——笔记本上外接显示器的接口。 【VGA接口兼容性更强,但是不支持高分辨率。 支持高分辨率:HDMI、DIV、TP】 bt【Bluetooth

xw_009的博客 1865

【fork与vfork的区别】

fork与vfork的区别

weixin_56223966的博客 3979

海康Camera MVS Linux SDK二次开发封装ROS packge过程记录(c++)

https://www.hikrobotics.com/machinevision/service/download?module=0

weixin_41965898的博客 2万+

vfork死循环问题

关于vfork函数的一个问题。 #include #include #include #include int main() { int g_val = 100; pid_t id = vfork(); if (id == 0) { g_val++; printf("child runing first...%d:%p\n", g_val, &g_val); sle

Fireplusplus的博客 1100

两张 300I Duo 部署 Qwen3.5‑32B

开发者成功使用两张华为300IDuo(共4颗Ascend310P3芯片)部署Qwen3/Qwen3.5的30B/32B模型,并公开详细步骤。关键点包括:硬件需两张300IDuo(每芯片44GB显存),软件需CANN≥24.1和MindIE2.3.0专用镜像。部署流程涵盖驱动安装、模型下载(需修改为FP16格式)、容器启动、张量并行配置(TP=4)等环节。实测显示每芯片显存占用20-35GB,系统稳定运行。该方案已在知乎等平台验证可行,适用于Qwen3.5-32B等同类模型。

evering的博客 2251

26. 如何给 SAP BTP Cloud Foundry 环境分配运行时内存

摘要:本文解答了SAP BTP Cloud Foundry环境中Space可用内存为0MB的问题。指出Space内存配额取决于Org配额分配,其计算方式为Org总配额减去所有运行中应用实例的内存预留总和。详细解释了SAP BTP的资源分配层级(Global account→Subaccount→Environment→Org→Space),并说明如何通过Global account的Entity Assignments查看Memory Plan配额分配(以GB为单位)。最后建议遇到问题的用户检查Subacc

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1261

vfork程序无限循环

我看资料说vfork会保证子进程先调子进程,并且子进程调用exit或者exec后父进程才可能被调用,那我既不调用exit又不调用exec,我用return会怎么样,或者我什么也不调用又会出现什么情况呢? 我的代码是这样的: #include #include int g_val=0; int main() { int val = 0; // pid_t id = f

only_do_IT 1095

6、 实时家禽健康识别与疾病检测系统的深入解析

本文深入解析了一种基于物联网的实时家禽健康识别与疾病检测系统,结合图像分析和音频分析技术,能够有效识别病鸡并防止疾病传播。文章详细介绍了系统的测试环境、数据采集与预处理方法、图像与音频分析流程,并对系统性能进行了全面评估。最后提出了未来改进方向,包括多模态融合、深度学习应用及实时性优化等。

weixin_28840811的博客 185

vfork

vfork死循环分析/***vfork.c***/ #include <stdio.h> #include <unistd.h> #include <stdlib.h>int main() { pid_t pid; pid = vfork(); if(pid < 0){ perror("fail to vfork"); exit(1); }else i

whuerzwz的博客 398

【Claude】Invalid model / Opus not available 错误:模型不可用的原因 bug报错已解决

使用 Claude API 时,指定错误或不可用的模型 ID 会收到 Invalid model 错误。本文从模型命名规则出发,给出模型降级链与动态选择方案。

博客 7913

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

vfork 例子祥解

vfork 例子祥解 #include #include #include #include int main(int argc, const char *argv[]) {     printf("Start ..............\n");     pid_t child_t;     if((child_t = vfork())     {

EastonWoo的专栏 1264

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

进程(三)vfork函数 僵尸 孤儿

1.vfork创建进程 vfork函数 也可以创建进程,与fork有什么区别 关键区别一: vfork直接使用父进程存储空间,不拷贝。 关键区别二: vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行。 如果使用fork调用 while(1)死循环 让父子进程一直争夺cpu资源 有可能一人一次 也有可能是一个人一直争到 vforktest9.c #include <stdio.h> #include <sys/types.h> #includ.

gangan 396

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

vkfork死循环

实例:                 这么一个简单的小程序,当把里面的exit(0),改为return 0,就会出现未定义的结果。 then Why? The vfork() function shall be equivalent to fork(), except that the behavior is undefined if the process created by vfo

chunlovenan的专栏 971

UNIX下C语言编程与实践30-UNIX 进程控制:vfork-exec 模型与 fork-exec 模型的效率对比

本文对比分析了UNIX系统中fork-exec和vfork-exec两种进程控制模型的核心差异。fork-exec采用写时复制机制,安全性高但略有性能开销;vfork-exec完全共享内存,效率极致但存在严重安全风险。测试显示在现代硬件上,vfork-exec仅比fork-exec快30%左右。建议优先使用fork-exec或POSIX标准接口posix_spawn,仅在内存极度有限的嵌入式系统等特殊场景才谨慎选用vfork-exec,并严格确保子进程立即执行exec/exit。现代UNIX系统通过优化fo

文石_2009的博客 992

进程控制(fork,vfork,exec,exit)

进程标识 每个进程都有一个非负整型表示的唯一进程ID。(虽然是唯一的,但是进程ID是可以复用的,比如当一个进程终止时,其ID就成为复用的候选者,即唯一性是指当前场景下) ID为0的进程通常是调度进程,常被称为交换进程,属于内核的一部分,其并不执行任何磁盘上的程序,也叫作系统进程。 ID为1的进程通常是init进程,可以通过终端命令 ps aux查看,一般为/sbin/init。init进程绝...

Canger_的博客 658

进程学习(一)——fork()和vfork()函数学习过程

fork()函数:

菜鸟学C/C++ 1723

1.2 Linux中的进程 --- fork、vfork、exec函数族、进程退出方式、守护进程等分析...

fork和vfork分析:   在fork还没有实现copy on write之前,Unix设计者很关心fork之后立即执行exec所造成的地址空间浪费,也就是拷贝进程地址空间时的效率问题,所以引入vfork系统调用。   vfork有个限制,子进程必须立刻执行_exit或者exec函数。   即使fork实现了copy on write,效率也没有vfork高,但是现在已经不推荐...

diaozhiwa5526的博客 266

execl: Permission denied 问题解决 && execl , vfork 应用

问题:验证excel只执行程序,不启动新的进程(即验证一下execl执行前后的pid是否变化) 先贴code main.C #include #include #include int main(void) { pid_t pid = vfork(); if (pid == 0) { printf("befor ececl : pi

Penper_King的博客 2505

vfrok()的使用

代码: #include #include #include int g_val=0; int main() { int val = 0; // pid_t id = fork(); pid_t id = vfork(); //vfork创建的子进程是在父进程的空间上进行操作,如果不exit则会破坏父进程的 //栈空间,出现段错误或者死循环 if(id < 0)

Everlasting2016的博客 737

return和exit函数的区别

在上Linux课的时候,老师提到一句,调用vfork产生的子进程就是为了使用exec族函数来执行其他的代码逻辑。 在子进程退出的时候有两种方式,exit和exec族函数,不能使用return,为什么不能用return呢,为什么只有vfork会不让用return呢? 于是我就写了这样的代码 #include

lenomirei的博客 251
上一篇: c 语言 解析ini文件为xml
下一篇: linux c 创建守护进程
MrBugYang
博客等级 码龄18年 21粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值