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

vllm运行过程中出现cuda out of memory

将长序列分解为多个小块,每个块分别处理。这样可以减少单次 Prefill 的计算量和显存占用,从而优化 TTFT 和显存使用效率。考虑使用 CPU 卸载(如 --cpu-offload-gb),将部分缓存卸载到 CPU 内存中,扩展 GPU 的虚拟内存。在大语言模型中,当输入序列很长(例如超过 1024 个 Token)时,Prefill 阶段的计算量会非常大。最后增加了enable-chunked-prefill参数和max_num_batched_tokens解决了问题。参数来进一步优化性能。

盛世芳华 3516

fork函数

与vfork的区别?

hey Man 592

STM32L452与FPGA通信翻车?手把手教你关闭I2C时钟延展避坑(附OVR错误解决方案)

本文深入解析STM32L452与FPGA在I2C通信中因时钟延展功能导致的常见问题,提供关闭I2C时钟延展的详细配置方法(NOSTRETCH模式),并针对可能出现的OVR错误给出Combined模式解决方案。通过实战案例和波形分析,帮助工程师快速排查和解决嵌入式系统中的I2C兼容性问题。

e3f4g5的博客 214

AI落地困局与破局者FDE:从技术神话到价值实干的战略转型

AI落地困局与破局者FDE:从技术神话到价值实干的战略转型 当前AI企业级应用面临三大核心挑战:业务场景深度非标化、技术落地"最后一公里"困局、以及市场竞争焦点转向实用价值。前线部署工程师(FDE)作为破局关键,通过技术-业务-产品三维交汇的复合能力,将AI从实验室推向生产环境。FDE不仅是技术架构师,更是业务价值挖掘机和产品进化传感器,通过"碎石路-高速公路"双循环模式,将定制化需求沉淀为可复用的平台能力。这种模式颠覆了传统SaaS的销售逻辑,形成基于价值的J型增长

随笔记录-分享&记忆 3989

【fork与vfork的区别】

fork与vfork的区别

weixin_56223966的博客 3979

告别专业软件!用QGIS+GDAL免费搞定S-57电子海图,附全套符号库和样式文件

本文详细介绍了如何利用免费开源工具QGIS和GDAL处理S-57电子海图,包括数据转换、符号库配置和专业可视化方案。通过实战指南,用户无需依赖昂贵的商业软件,即可实现从S-57到SHP的转换及专业级海图制作,特别适合预算有限的个人和小型机构。

weixin_33701294的博客 391

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

本地部署开源视频会议解决方案 Jitsi Meet 并实现外网访问

Jitsi Meet 是一款基于 WebRTC 技术的开源视频会议解决方案,它允许用户通过互联网进行高质量的视频通话、语音通话和文本聊天,非常适合用于在线教育、远程办公、团队协作等场景。本文将详细介绍如何利用 Docker 在本地部署 Jitsi Meet 并结合路由侠实现外网访问本地部署的 Jitsi Meet。

lyxnwct的博客 1945

Transformer凭什么取代RNN?深入拆解自注意力机制与梯度消失问题的终极对决

本文深入探讨了Transformer如何通过自注意力机制解决RNN的梯度消失问题,成为自然语言处理领域的新标准。通过对比RNN和Transformer的架构差异,揭示了自注意力机制在并行计算、长期依赖处理等方面的技术优势,并提供了实际任务中的性能对比数据。

f6g7h8i9j的博客 190

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

基于 WebGoat 平台的 SQL 注入攻击

基于 WebGoat 平台的 SQL 注入攻击

Labulongdong的博客 3521

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

智能车图像处理0-变量释义

这篇文章主要讲述智能车图像处理中,各篇主要变量的含义。如果在看具体分析代码时感到困惑,可以在本篇文章中查询,辅助理解。

taiyuezyh的博客 3668

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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

gangan 396

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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、付费专栏及课程。

余额充值