abort、exit、atexit、strerror函数的使用方法

UR5 机械臂手眼标定(Eye-in-Hand)实战:OpenCV 求解 AX=XB,误差 < 2mm 本文详细介绍了UR5机械臂在Eye-in-Hand配置下的手眼标定实战,通过OpenCV实现高精度标定,最终达到误差小于2mm的工业级精度要求。文章涵盖了标定基础原理、环境搭建、数据采集策略、核心算法实现及误差分析与优化,为视觉机械臂的自主抓取提供了实用指南。 阅读详情

这些都属于流程控制过程,不是语言内建元素。

但abort是在SysUtils单元中定义的:

是通过抛出silent exception来退出整个程序。

Exit是System单元中定义的, 用来退出过程(例外情况,finally还是会被执行)
In Delphi, the Exit procedure immediately passes control away from the current procedure. If the current procedure is the main program, Exit causes the program to terminate.

Note:  Exit passes control away from the current procedure, not merely the current block. But Exit does not violate the flow of control dictated by a try..finally construct; if Exit is called inside the try clause, the finally clause is still executed.

halt也是在System单元中定义的, 退出程序,且可以返回一个代码给操作系统。
procedure Halt [ ( Exitcode: Integer) ];


出错处理函数abort、exit、atexit、strerror. . .C/C++ 2009-02-19 10:55:20 阅读526 评论0   字号:大中小 订阅 .

摘要:本文详细讲述了几个出错处理的函数abort、exit、atexit、strerror函数的使用方法,并给出来具体的示例程序。

     

函数名: abort

功 能: 异常终止一个进程

用 法: void abort(void);

头文件:#include

说明:abort函数是一个比较严重的函数,当调用它时,会导致程序异常终止,

而不会进行一些常规的清除工作,比如释放内存等。

程序例:

#include

#include

int main(void)

{

   puts( "About to abort..../n" );

   abort();

  

    puts( "This will never be executed!/n" );

    exit( EXIT_SUCCESS );

}

[root@localhost error_process]# gcc abort.c

[root@localhost error_process]# ./a.out

About to abort....

已放弃

-----------------------------------

头文件 #include

定义函数 void exit(int status);

exit()用来正常终结目前进程的执行,并把参数 status 返回给父进程,

而进程所有的缓冲区数据会自动写回并关闭未关闭的文件。

它并不像abort那样不做任何清理工作就退出,而是在完成所有的清理工作后才退出程序。

----------------------------------------

atexit(设置程序正常结束前调用的函数)

头文件 #include

定义函数 int atexit (void (*function)(void));

返回值 如果执行成功则返回 0,否则返回-1,失败原因存于 errno 中。

atexit()用来设置一个程序正常结束前调用的函数。当程序通过调用 exit()或从 main 中返回时,参数 function 所指定的函数会先被  调用,然后才真正由 exit()结束程序。

很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函数。

    atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。atexit()的函数原型是:int atexit (void (*)(void));

    在一个程序中最多可以用atexit()注册32个处理函数,这些处理函数的调用顺序与其注册的顺序相反,也即最先注册的最后调用,最后注册的最先调用。

 

#include

#include

void my_exit(void)

{

    printf( "Before exit..../n" );

}

int main(void)

{

    atexit( my_exit );

    return 0;

}

[root@localhost error_process]# gcc atexit.c

[root@localhost error_process]# ./a.out

Before exit....

-----------------------------------------------------

     strerror(返回错误原因的描述字符串)

头文件     #include

定义函数     char * strerror(int errnum);

strerror()   用来依参数 errnum 的错误代码来查询其错误原因的描述字符串,然后将该字符串指针返回。

这时如果把 errno 传个strerror,就可以得到可读的提示信息,而不再是一个冷冰冰的数字了。   

返回值      返回描述错误原因的字符串指针。

#include

#include

int main(void)

{

    int i;

   

    for ( i=0; i<10; i++ )

    {

        printf( "%d:%s/n", i, strerror(i) );

    }   

   

    return 0;

}

[root@localhost error_process]# gcc strerror.c

[root@localhost error_process]# ./a.out

0:Success

1:Operation not permitted

2:No such file or directory

3:No such process

4:Interrupted system call

5:Input/output error

6:No such device or address

7:Argument list too long

8:Exec format error

9:Bad file descriptor

[root@localhost error_process]#

http://hi.baidu.com/flyownway/blog/item/0cfb6703842d85ea08fa93b0.html

------------------------------------------------

3.9 错误处理

正如我们已经看到的,本章介绍的许多系统调用和函数 都会因为各种各样的原因而失败。失败时,它们会设置外部变量errno的值来指明失败的原因。许多不同的函数库都把这个变量用做报告错误的标准方法。我们 也反复告诫大家,程序必须在函数报告出错之后立刻检查errno变量,因为它可能被下一个函数调用所覆盖,即使下一个函数自身并没有出错,也可能会覆盖这 个变量。

错误代码的取值和含义都列在头文件errno.h里,其中包括:

l EPERM:操作不允许。

l ENOENT:文件或目录不存在。

l EINTR:系统调用被中断。

l EIO:I/O错误。

l EBUSY:设备或资源忙。

l EEX IST:文件存在。

l EINVA L:无效参数。

l EMFILE:打开的文件过多。

l ENODEV:设备不存在。

l EISDIR:是一个目录。

l ENOTDIR:不是一个目录。

有两个非常有用的函数可以用来报告出现的错误,它们是strerror和perror。

3.9.1 strerror函数

strerror函数把错误编码映射为一个字符串,该字符串对发生的错误类型进行说明。这在记录错误条件时十分有用。

函数原型如下:

 

3.9.2 perror函数

perror函数也把error变量中报告的当前错误映射到一个字符串,并把它输出到标准错误输出流。该字符串的前面先加上参数s(如果s不为空)给出的信息,再加上一个冒号和一个空格。

函数原型如下:

 

请看下面的例子:

 

它会在标准错误输出中给出如下的输出结果:

 

CancelUpdates是继承自ADO原生接口的方法,用来取消尚未提交的记录,与CancelBatch(arAll)的作用一样,原生的CancelBatch和CancelUpdates通常只用在批量模式中,但是在TADOQuery的继承中对单记录模式应当同样有效。

Cancel是继承自TDataset的虚方法,通过TADOQuery的父类TCustomADODataset   Override,使其调用ADO原生接口的CancelUpdate方法,取消当前编辑或插入的记录

抖音移动端Web用户主页视频列表爬虫实战:逆向加密参数与高频采集方案 App端Hook/抓包:需要安卓逆向、Xposed或Frida,门槛高且容易被风控。官方开放API:限制极多,几乎不开放用户级视频列表。PC端Web:页面加载方式繁杂,且大量依赖懒加载与内部状态。移动端Web(:接口相对稳定,加密逻辑集中,且适合使用Requests/HTTPSession模拟,无需渲染引擎。本文聚焦于移动端Web下的用户主页视频列表爬取,采用Python 3.11 + httpx + PyExecJS + 正则/JSON解析的组合,破解X-Bogus签名和_signature。 阅读详情

相关推荐

大麦网抢票软件工具开发系列(一)

前言《大麦网》都知道吧,就是那个被网友声称“大麦网你卖啥了?”票务平台。近期有听到朋友说《大麦网》的票很难抢,基本上都是说:“哎哟喂,被挤爆啦,请稍后重试!”,也不知道《大麦网》...

架构文摘 1万+

C语言中strerror以及perror函数详解

函数原型:功能:strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来。在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在errno.h这个头⽂件中说明的,C语⾔程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会讲对应的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀错误码都是有对应的错误信息的。

2301_79881188的博客 842

手把手教你设计T型和Π型衰减器:从理论计算到实际搭建(含误差分析)

本文详细介绍了T型和Π型衰减器的设计方法,从理论计算到实际搭建,包括电阻值推导、元件选择技巧及误差分析。通过实例演示如何设计50Ω系统中的10dB衰减器,并提供了高频应用和优化策略,帮助电子工程师掌握阻抗匹配与信号衰减的核心技术。

weixin_33737774的博客 395

C语言字符串函数strerror的详细解释

上面的程序中,我们尝试打开一个不存在的文件,open() 函数返回 -1,表示出错。我们可以使用 strerror() 函数将 errno 变量的值转换为相应的错误消息字符串,并输出错误信息。我们可以使用 strerror() 函数将这些错误码转换为相应的错误消息字符串,以便进行错误处理或者输出错误信息。函数会将该错误码转换为相应的错误消息字符串,并返回一个指向该字符串的指针。在C语言中,strerror()函数是一个字符串处理函数,它用于将错误码转换为相应的错误消息字符串。

nnnggglo的博客 1246

tft_espi 中文字体及自定义字体制作(tft.eSPI模块)

tft.eSPI库自定义字体方法 先下载 processing 然后安装到mixly安装目录下找到tft_eSPI文件夹。

琢磨侠的博客 2762

手把手教你用UNet实现轨道缺陷检测(附RSDDs数据集下载与完整代码)

本文详细介绍了如何使用UNet模型实现轨道缺陷检测,包括RSDDs数据集的下载与处理、UNet架构的改进与优化、训练策略设计以及模型部署的全流程。通过实战案例,展示了如何利用深度学习技术提升工业质检效率,特别适合从事工业缺陷检测和图像处理的开发者参考。

dapp9builder的博客 746

C语言复习(7)——输入/输出函数

1.流 人与计算机的程序进行交互。很多都与I/O操作(输入/输出)有关。显示器,硬盘,内存,键鼠,网口等就是很常见的设备。操作系统负责这些不同设备的通信细节,并向程序员提供一个更为简单和统一的I/O接口。 就C程序而言,所有的I/O操作只是简单地从程序移进或移出字节。这种字节流便称为流(stream)。 绝大多数的流是完全缓冲的,这意味着读取和写入是从一块被称为缓冲区(buffer)的内存区域来回复制数据。 C语言中有三种流对象 1.1 标准输入流——stdin stdin(standard input s

qq_43041053的博客 552

手把手教你学Simulink--单相逆变器模糊逻辑控制策略仿真

本文介绍了在Simulink中设计单相逆变器模糊逻辑控制策略的完整流程。主要包括:1)构建单相逆变器模型;2)使用FuzzyLogicToolbox设计模糊控制器,定义输入输出变量和模糊规则;3)将控制器集成到Simulink模型;4)添加干扰源和示波器;5)配置仿真参数并分析结果。该方法利用模糊控制处理非线性系统的优势,可实现输出电压的精确跟踪,具有良好的鲁棒性。文中提供了详细的步骤说明和示例代码,强调准确设计隶属函数和规则库对控制性能的关键作用。该仿真设计为电力电子控制系统的开发提供了有效支持。

MHD0815的博客 200

Linux 错误码

在 Linux 系统中,错误码是用来表示操作系统运行过程中发生的错误的数字代码。错误码通常由负数表示,0 表示成功,正数表示警告或其他非致命错误。为了开发者更好地处理系统错误,内核中预定义的错误几乎涵盖了我们可能遇到的所有问题。一些错误的宏定义在,还有一部分定义在中。当函数执行发生错误的时候,操作系统会将这个错误所对应的编号赋值给errno变量,每一个进程都维护了自己的 errno 变量,它是程序中的全局变量,该变量用于存储就近发生的函数执行错误编号。

Projectsauron 的博客 5万+

从 QQ 聊天到 AI Agent:AstrBot + NapCat 接入 DeepSeek

<think>我们根据要求,根据提供的内容生成≤150字的文章摘要。内容是关于在Windows上使用Docker部署AstrBot+NaPCat,配置DeepSeek,实现QQ AI机器人。摘要需简洁概括主要步骤和结论。注意字数。</think>在Windows 11上通过Docker一键部署AstrBot与NapCat,实现QQ机器人。NapCat扫码登录QQ,AstrBot接入并配置DeepSeek API,完成AI对话。后续可扩展人格、插件及MCP工具,并通过cpolar提供公网管理入口,打造可扩展的

天道酬勤 1万+

Qwen-Image(阿里通义千问)技术浅析(一)

Qwen-Image(阿里通义千问多模态模型)是阿里巴巴推出的视觉-语言多模态大模型,能够理解图像内容并完成复杂的跨模态任务。

m0_75253143的博客 675

94-可重入函数(二)

也许你很奇怪,为什么标题后面有个(二)。因为在信号的章节中,已经使用过此标题了。那为什么这一次又再讲一遍?这是因为,在异步信号处理与多线程中,可重入有一点点区别。1. 可重入函数到了这里,我们将可重入函数分成两类: 对线程可重入 对信号可重入 注意,上面两种是不同的。对于信号可重入,我们已经学习过了。1.1 对线程可重入如果一个函数对线程重入是安全的,则称其为线程安全函数。它的意思是说,在相同的时间

进击的小学生 1379

2025爬虫实战:某音直播间实时弹幕获取原理及源码分析

某音直播弹幕虽然没有直接挂在 DOM 上,但由于用的是西瓜播放器,弹幕是通过 JS 接口动态渲染的,这就给了我们 Hook 的机会。关键点是找到调用的位置,然后拦截并输出对象里的message字段。这个思路其实也适用于其他前端渲染的播放器,比如 B 站的 DPlayer、HLS.js、甚至很多自研播放器都有类似结构。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1810

几个出错处理的函数abort、exit、atexit、strerror函数的使用方法

函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 头文件:#include 说明:abort函数是一个比较严重的函数,当调用它时,会导致程序异常终止, 而不会进行一些常规的清除工作,比如释放内存等。 程序例: #inc

songyang516的专栏 797

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Camera2Demo

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

出错处理函数abort、exit、atexit、strerror

出错处理函数abort、exit、atexit、strerror. . .2010-06-30 22:43摘要:本文详细讲述了几个出错处理的函数abort、exit、atexit、strerror函数的使用方法,并给出来具体的示例程序。 函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 头文件:#include 说明:abort函数是一个比较严重的函数,当调用它时,会导致程序异常终止, 而不会进

计算机编程开发学习交流的专栏 1953

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

出错处理函数abort、exit、atexit、strerror. . .

摘要:本文详细讲述了几个出错处理的函数abort、exit、atexit、strerror函数的使用方法,并给出来具体的示例程序。             函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 头文件:#include 说明:abort函数是一个比较严重的函数,当调用它时,会导致程序异常终止, 而

abcd1f2的专栏 642

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

出错处理之四——abort_exit_atexit_strerror函数的使用

摘要:本文详细讲述了几个出错处理的函数abort、exit、atexit、strerror函数的使用方法,并给出来具体的示例程序。             zieckey@yahoo.com.cn 函数名: abort 功 能: 异常终止一个进程 用 法: voi

yuyin86的专栏 779

出错处理函数abort、exit、atexit、strerror. . .

摘要:本文详细讲述了几个出错处理的函数abort、exit、atexit、strerror函数的使用方法,并给出来具体的示例程序。 函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 头文件:#include <stdlib.h> 说明:abort函数是一个比较严重的函数,当调用它时,会导致程序异常终止,...

weixin_30872789的博客 118

exit和_exit函数,atexit函数 abort函数

#include exit和_exit函数用于正常终止一个程序: _exit立即进入内核,exit则先执行一些清除处理(包括调用执行各终止处理程序,关闭所有标准I / O流等),然后进入内核。使用不同头文件的原因是:exit是由ANSI C说明的,而_exit则是由POSIX.1说明的。         由于历史原因,exit函数总是执行一个标准I/O库的清除关闭操作:对于所有打开流调用 f

cybertan的专栏 980

转载 : Exit() , abort(), 终止程序

原帖地址 : http://www.cnblogs.com/tobyforever/archive/2009/05/08/1452328.html exit和_exit函数用于正常终止一个程序: _exit立即进入内核,exit则先执行一些清除处理(包括调用执行各终止处理程序,关闭所有标准I / O流等),然后进入内核。使用不同头文件的原因是:exit是由ANSI C说明的,而_exit则

smithsix的专栏 793

Linux编程—出错处理之assert,abort,exit,atexit,strerror

1. assert() assert宏的原型定义在assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include assert.h> void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用abort 来终止程序运

youngstonep的专栏 596

linux abort 头文件,Linux编程—出错处理之assert,abort,exit,atexit,strerror

Linux编程--出错处理之assert,abort,exit,atexit,strerror1.assert()http://blog.chinaunix.net/u/16292/showart_391324.htmlassert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#includevoid assert( int expression );assert的作用...

weixin_39845206的博客 634

exit、return、_exit、_Exit这几个函数的区别

1、exit函数和return函数的主要区别是: 1)exit用于在程序运行的过程中随时结束程序,其参数是返回给OS的。也可以这么讲:exit函数是退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息。 main函数结束时也会隐式地调用exit函数,exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭

lizhifeng2009的专栏 718

【转载】程序的终止 exit函数 abort函数

exit和_exit函数用于正常终止一个程序: _exit立即进入内核,exit则先执行一些清除处理(包括调用执行各终止处理程序,关闭所有标准I / O流等),然后进入内核。使用不同头文件的原因是:exit是由ANSI C说明的,而_exit则是由POSIX.1说明的。 由于历史原因,exit函数总是执行一个标准I/O库的清除关闭操作:对于所有打开流调用 f...

weixin_34055787的博客 131

出错处理之assert,abort,exit,atexit,strerror

abort : 产生 SIGABRT 信号。非正常退出,即在程序碰到灾难性错误时强制退出。由于是非正常退出,因此不会做其它任何操作。A2L6ii t0 7R+bB.x0mo0atexit 是在执行 exit 函数时设置要作的工作,实际就是调用要在程序退出想让程序执行的函数。 Linuxeden博客家园9U&T*\ O,WLinuxeden博客家园4bH;h-p

Sunny04的专栏 998
上一篇: static_cast,dynamic_cast,reinterpret_cast和c语言转换
下一篇: program profiler configuration
Hashmat
博客等级 码龄16年 14粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值