[Happy Coding] 关于system/exit/wait的解释

[Happy DSA] 图像的contour trace算法C++实现 问题提出: 给定一个二维图像,基于某个threshold,来提取contours。 在图形图像学中,这个问题有比较好的解决方案,google "coutour trace",可以得到以下2个比较好的参考文献: 1. http://en.wikipedia.org/wiki/Moore_neighborhood 2. http://www.imageprocessingplace.com/d 阅读详情
关于system/exit/wait的解释

先看下面的代码段:

static int system2(const char *command)
{
    pid_t pid; 
    int status;

    pid = fork();

    if (pid == 0) { 
    int null = open("/dev/null", O_RDWR);
    dup2(null, 0);
    dup2(null, 3);
    if (null > 2) close(null);
    if (null == 3)
        fprintf(stderr, "fd3 is closed in the forked process\n");
    status = system(command);
    if (null <= 2) close(null);
    _exit(WEXITSTATUS(status));
    }    
    for(;;) {
        pid = waitpid(pid, &status, 0);
        if (pid < 0) { 
            perror("waitpid");
            fprintf(stderr, "Unexpected error: waitpid: %s", strerror(errno));
            status = -1;
        } else if (WIFSTOPPED(status)) {
            continue;
        }
        break;
    }
    return status;
}

上面代码中,waitpid返回的status中,共有16位,高8位代表子进程退出码(0-255,0代表正常退出,非0一般是非正常退出),低8位代表子进程的原因,是信号触发,还是自己正常退出(0为正常退出,0x7F为STOP,0x80为KILL强行退出)。

所以WIFSTOPPED这个宏就是用来判断第8位是否为0x7F。

子进程调用system函数,然后期望将system的返回码(孙子进程退出状态)进一步返回给父进程。system的返回值应该也有16位信息,高8位为退出码,低8位为退出原因。在将这个孙子进程的退出状态返回给父进程时,调用了_exit()函数,这时,需要提取高8位,所以得用宏WEXITSTATUS。

上面宏的有关定义如下:

#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
#define WCOREDUMP(s) ((s) & 0x80)
#define WTERMSIG(s) ((s) & 0x7f)
#define WSTOPSIG(s) WEXITSTATUS(s)
#define WIFEXITED(s) (WTERMSIG(s) == 0)
#define WIFSTOPPED(s) (WTERMSIG(s) == 0x7f)
#define WIFSIGNALED(s) (WTERMSIG((s)+1) >= 2)

最后从system2的返回值,期待跟原生system的返回值类似,具有退出码和退出原因,以便客户端代码进一步用相关宏来判断。


[Effective WX] wxAUIManager在GTK实现上的一些问题 1. wxAUINoteBook wxAUINoteBook,内置一个wxAUIManager,用来管理所有的pages. 如果创建一个notebook,然后将其添加到上层的auimanager中: m_pToolsNotebook = new wxAuiNotebook(this, ID_TOOLSPANE_NOTEBOOK); this->GetAuiManager( 阅读详情

相关推荐

AltiumDesigner.zip

AltiumDesigner.zip

langchain AI应用框架研究【核心概念-篇一】

langchain新版本1.1.0 出来了,老板了的api看了一些,api写法看起来有些凌乱,特别是那个构造chain的地方,先后顺序感觉不好记忆,还是SpringAI相对好好记忆一些。不知到1.x版本的会好使一些不。我们先来看看新版的langchain、langgraph、deepagents。LangChain 是一个用于开发由大语言模型(LLM)驱动的应用程序的开源框架。它的核心目标是提供一个统一的抽象层,让开发者可以方便地组合各种组件,而无需关心底层与不同模型API对接的细节。

yanghuashuiyue的专栏 601

YOLO26算法日历数字识别+训练好的模型+102张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[数字(number)] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 97 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9156** mAP50-95 | 0.7374 Precision | 0.8626 Recall | 0.8381 train/box_loss | 0.8790 train/cls_loss | 0.7499 val/box_loss | 0.7874 val/cls_loss | 0.6025 【训练过程分析】 训练开始后,我注意到前几轮的 loss 下降特别快,这让我有点兴奋,但随着训练的深入,loss 的降幅变得不那么明显了。在训练的第 30 轮左右,val_loss 开始趋于平稳,这让我稍微放心了一些,但同时也感觉压力倍增,因为一旦训练过早平稳,就容易陷入过拟合的泥沼。经过 97 轮的磨炼,最终 mAP50 达到了 0.9156,这让我松了一口气。不过,mAP50-95 仅有 0.7374,和 mAP50 之间有明显的差距,说明模型在低置信度的检测上还需要优化。从 loss 曲线来看,训练过程总体上比较平稳,没有明显的过拟合迹象,但也让人觉得有些枯燥。我心想,要是能早点找到一个陡峭上升的训练曲线该有多好,这样至少能让人心态更积极一些。 随着训练进行到后半段,模型开始逐渐收敛,但这个过程并不是一帆风顺的。在训... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

[Happy Coding] 一个正则表达式,支持逻辑和关系运算符组成的表达式计算

I. 写一个正则表达式,要求判断一个数是否满足以下条件: >= val1 && 1. val1和va2要求支持浮点数; 2. 支持>, >=, 3. 支持&&, ||, and(不区分大小), or(不区分大小写)逻辑运算 1) 有效的浮点数的正则表达式如下: ([+-]?\d+(\.\d+)?|0?\.\d+) 支持+/-m.n, m.n, .n, 不支持m. 2) 关系

zeroom的技术专栏 1万+

风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真

内容概要:本文介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于隔离型全桥LLC谐振变换器的建模、仿真与参数设计,涵盖其在电力电子系统中的关键应用,如软启动、闭环控制、变频控制及效率优化等。该模型支持对LLC变换器在不同工作模式下的动态响应与性能表现进行深入研究,适用于探究谐振拓扑结构、磁性元件设计、谐振参数匹配以及先进控制策略的科研与工程实践。同时,文档配套提供了仿真模型、设计报告与计算书等完整资料,强化了其实用性与教学价值。; 适合人群:具备电力电子、自动化或电气工程等相关专业背景,从事电力电子变换器研发、系统仿真与控制算法设计的科研人员、工程师及研究生。; 使用场景及目标:①用于全桥LLC谐振变换器的建模、仿真与动态性能分析;②支持对软启动过程、闭环稳压控制、变频调谐及效率优化等核心技术的研究与教学;③为电力电子电源系统的工程设计、参数优化与控制策略验证提供高精度仿真平台。; 阅读建议:建议结合Plecs或Simulink等仿真工具进行动手实践,重点理解电路拓扑构建、谐振参数计算、控制器设计与系统稳定性分析,并配合文档中的设计报告与计算书,系统掌握从理论到仿真的完整流程。

国央企创新负责人如何通过平台实现科技创新资源的系统集成与高效配置?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

[Effective WX] win7上的wxFileDialog的默认路径问题分析与解决

wxFileDialog是wxWidget库的一个类(关于wxWidget库,可以参考 http://www.wxwidgets.org/)。这个类用来操作本地文件的打开与保存。在不同的平台上,wxFileDialog封装平台原生的API来实现,譬如win32平台,封装了GetOpenFileName和GetSaveFileName这2个API函数。我们只讨论win32平台。既然只是简单的封装这2

zeroom的技术专栏 2900

独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)

内容概要:本文介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于全桥LLC谐振变换器在电力电子系统中的建模与仿真研究。该资源提供了基于Plecs平台的高精度仿真模型,完整呈现了变换器的主电路拓扑、谐振参数设计、软开关实现机制及变频控制策略,能够有效支持对系统效率、动态响应与稳态性能的深入分析。模型充分体现了LLC谐振变换器在实现零电压开关(ZVS)、降低开关损耗和提升能量转换效率方面的优势,适用于新能源发电、储能系统及高效率电源设计等应用场景。; 适合人群:具备电力电子、自动控制及电路理论基础知识,从事电力电子变换器设计、新能源系统开发或相关领域研究的研究生、高校教师及工程技术人员。; 使用场景及目标:①用于全桥LLC谐振变换器的工作原理教学与参数设计实践;②支撑软开关特性、变频控制策略、效率优化等关键技术的仿真验证与性能评估;③作为科研项目、课程设计或毕业设计中电力电子系统仿真的核心参考模型,促进理论与工程实践的结合。; 阅读建议:建议使用者在掌握LLC谐振变换器基本工作原理的基础上,结合相关电力电子教材与Plecs软件操作指南,通过调整谐振元件参数、负载条件及控制策略进行多工况仿真,深入理解其工作机理与优化方法,并结合实验数据对比验证仿真结果的准确性。

[Happy Coding] fprintf 不正确调用惹的祸

我们都知道C语言标准库操作文件写有一个函数叫做fprintf,用来写出字符串到文件里。这个函数如果不特别注意,会给我们带来很大的麻烦。 比如下面的代码段: const char* outstring = "xxxxx"; FILE* outfileH = fopen("test.txt", "w"); if (!outfileH) { return false; } fprint

zeroom的技术专栏 2011

海外跨境电商商城源码-进出口电商平台网站-多语言多商户平台

我们的海外跨境电商系统源码还包括各种功能模块,如用户管理、商品管理、订单管理等。支付管理:与主流支付平台(如Stripe、PayPal等)的集成,支持多种支付方式;订单管理:创建订单、支付订单、取消订单等操作,以及订单状态查询和历史记录;购物车管理:添加商品到购物车、查看购物车、修改购物车中的商品数量等操作;商品管理:商品信息录入、编辑、删除等操作,以及商品分类和搜索功能。客服管理:在线咨询、投诉处理等功能,提供更好的用户服务。用户管理:注册、登录、忘记密码、个人资料。# 检查电子邮件地址是否有效。

柏诣科技的博客 2661

Macbook Pro Bootcamp 安装触控板驱动mac-precision-touchpad在Windows系统下实现更好的触控板操作

由于很多软件的限制,所以不得不在Windows和MacOS之间进行切换,然而,Windows下虽然Bootcamp提供了触控板的驱动,然而只能实现简单的上下滑动和点击等操作,而且在滑动页面的时候滑动非常不流畅,体验极差。 今天无意间发现了一款第三方撰写的驱动,可以较为完美地实现Macbook笔记本在Windows系统下的触控板操作支持,通过在我的2015款Macbook Pro(A1502)进行安装测试,感觉体验很不错,在这里分享给大家。 驱动来自于Github上的imbushu,他的项目地址如下: htt

博客 1万+

[Happy Coding] luabind 0.9.1版本尝试

luabind 0.9.1版本尝试 1. 编译luabind 0.9.1 linux版本需要bjam binary 直接copy boost/1.37.0目录中编译好的bjam binary到~/bin目录,然后在luabin根目录中运行bjam 编译之前需要设置环境变量BOOST_ROOT=~/mylibs/boost/1.37.0/ 和LUA_PATH=~/mylibs/lua/

zeroom的技术专栏 1857

告别手动点鼠标:用Python脚本批量跑ADS版图仿真,效率提升10倍(附完整代码)

本文详细介绍了如何利用Python脚本自动化ADS版图仿真流程,显著提升射频工程师的工作效率。通过调用ADS底层接口,实现参数化修改、批量任务调度和结果自动收集,解决了手动操作中的常见问题,如仿真不更新等。附完整代码,帮助开发者快速实现10倍效率提升。

weixin_42523543的博客 332

[Happy Coding] 只能new不能delete的基类实现方法

1. 问题提出 定义一个类,客户端只能new不能delete,但是要求这个类能够被继承。 2. 问题分析 客户端代码能够new一个类实例,说明这个类提供了对应的public访问域的构造函数,不能delete它,说明这个类没有提供public访问域的析构函数。也就是说,析构函数要么是在protected访问域中,要么是在private访问域中。但是要求这个类能够被继承,至少说明析构函数

zeroom的技术专栏 1772

Stable Diffusion跑图总爆显存?别急着换显卡,试试这个PYTORCH_CUDA_ALLOC_CONF参数调优

本文深入解析了Stable Diffusion运行中常见的显存不足问题,特别是由显存碎片化导致的假性OOM现象。通过详细讲解PYTORCH_CUDA_ALLOC_CONF参数中的max_split_size_mb设置技巧,提供了一套完整的显存优化方案,帮助用户在无需升级硬件的情况下显著提升AI绘画的稳定性与效率。

weixin_42524100的博客 347

基于java实现的弹幕视频网站

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示弹幕视频网站,在弹幕视频网站可以查看首页、视频信息、商品信息、论坛信息、我的、跳转到后台、购物车、客服等内容前台首页界面图登录,通过登录填写账号、密码等信息进行登录操作登录界面图视频信息界面图。

DC5621的博客 1333

[Happy Coding] 加速Windows GUI debug版本的编译

1. 问题描述 我们重构我们的GUI程序时,增加了很多小的工程库,VC++编译GUI最顶层DLL库libpkgA的速度让人几乎无法忍受。 以下是从我们的buildbot系统里截取出来的LOG: 28>... 28>Embedding manifest... 28>Build Time 188:17 编译时间**188分钟**。 GUI app依赖于这个DLL库,同时也依赖

zeroom的技术专栏 1396

nvidia jetson orin调试 MAX96712 serdes相机(SG2-AR0233C-GMSL2)

背景:想了解一下关于nvidia orin camera相关的模块,基于Drive Orin demo板的话,没有合适的相机,用 nvsipl框架点亮 GMSL相机不知如何下手,那么基于nvidia Jetson orin的话,目前国内有对应的转接板以及GMSL相机可以参考,基于此,那么本文详细记录一下关于nvidia orin的相关踩坑记录;需要Nvidia Jetson Orin开发板一个,MIPI转接板一个,MIPI转GMSL转接板一个,GMSL线束(fakra单线束),GMSL摄像头一个。

qq_30025621的博客 4446

[Effective WX] wxPropertyGrid遇上wxWS_EX_VALIDATE_RECURSIVELY产生的BUG

对于wxWidget的第三方库wxPropertyGrid,客户端代码实例化一个wxPropertyGrid时有时会发生CRASH。 简单的说,就是下面的代码行在某种情况下会CRASH: wxPropertyGrid* pPG = new wxPropertyGrid(pParentWin, wxID_ANY); 那么到底是在哪种情况下呢? 编写了一个简单的测试代码,跟踪调试发现,C

zeroom的技术专栏 1312

芯擎SEC1000芯片参数详细介绍

随着龙鹰一号的不断进化和应用,未来的智能座舱将不仅仅是显示和控制的集成,更是人与车之间的一种默契和无缝交互的体现。在汽车行业迈向智能化和电动化的浪潮中,座舱已不仅仅是一个驾驶者的操作空间,而是逐渐演变为一个集娱乐、信息、控制于一体的智能交互平台。今天的汽车不仅需要强劲的动力和炫酷的外观,更需要一颗强大而智能的“心脏”来支撑复杂的座舱体验和安全驾驶需求。想象一下,未来的汽车不再仅仅是交通工具,它将成为你的移动私人管家,了解你的习惯,甚至提前预测你的需求。让我们一起走进龙鹰一号的世界,探索智能座舱的无限可能!

weixin_43199439的博客 1725

【数据集】全球湿度数据集总结

【数据集】全球湿度数据集总结

WW、forever的博客 1661

[Happy DSA] 删除单链表中任意一个节点的方法

在阅读c-algorithms代码时,又看到如下的代码(删除单链表中任意一个节点) /* A singly-linked list */ struct _SListEntry { SListValue data; SListEntry *next; }; int slist_remove_data(SListEntry **list, SListEqual

zeroom的技术专栏 1282

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

glibc中几个数值处理函数

ceil/floor/rint/round,这几个C的数值处理函数,我们通常用它们来取整某个特定的浮点数。 — Function: double ceil (double x) These functions round x upwards to the nearest integer, returning that value as a double. Thus, ceil (1

zeroom的技术专栏 1022

温度PID控制PLC程序

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

efm32 入门.pdf

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

关于<C专家编程>的笔记

重新阅读, 以下是关于的笔记,觉得要重点掌握的。 1. 关于const的变量的赋值 foo(const char** p) { } main(int argc, char** argv) {     foo(argv);  // *** } 上面代码段中//***会产生编译错误。原因在于 const char** p = argv; 赋值是不被允许的。

zeroom的技术专栏 989

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[Happy DSA] 程序实现绘制箭头的原理

下图演示了如何给一条线段画上箭头的实现原理,主要也就是如何旋转一个向量。 其中rotation angle和scale都可以在程序代码中自定义。

zeroom的技术专栏 755
上一篇: 启动我自己的<Effective Python>系列文章
下一篇: [Effective WX] wx的UI UnitTest explained
zero_lee
博客等级 码龄21年 94粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值