exit和_exit函数和atexit函数

相对于return函数,exit和_exit是用于专门退出进程的函数,而return不是用于专门退出进程的,只是执行mian函数时,return可以退出进程。(return退出当前函数执行的栈空间,并返回当前函数执行的结果)

void _exit(int status);
功能:退出当前进程(系统调用不会刷新缓冲区)
参数:@status:进程退出状态(status & 0377)[0-255]#define EXIT_FAILURE	1 /* Failing exit status.  */#define EXIT_SUCCESS	0 /* Successful exit status.  */
返回值:无
void exit(int status);
功能:退出当前进程(库函数会刷新缓冲区)
参数:@status:进程退出状态(status & 0377)#define EXIT_FAILURE	1 /* Failing exit status.  */#define EXIT_SUCCESS	0 /* Successful exit status.  */
返回值:无

exit实例    刷新缓冲区 输出1 2

#include <head.h>
void func()
{printf("1\n");printf("2");exit(20);  //退出进程,刷新缓冲区,子进程退出,父进程没有回收资源,子进程是僵尸态printf("3\n");//进程退出了,这句话不会执行
}
int main(int argc, const char *argv[])
{pid_t pid;pid = fork();if (pid == -1){perror("fork error");exit(-1);}else if (pid == 0){// 子进程func();}else{// 父进程while (1){}}return 0;
}

_exit实例  输出 1

#include <head.h>
void func()
{printf("1\n");printf("2");_exit(20);  //退出进程,刷新缓冲区,子进程退出,父进程没有回收资源,子进程是僵尸态printf("3\n");//进程退出了,这句话不会执行
}
int main(int argc, const char *argv[])
{pid_t pid;pid = fork();if (pid == -1){perror("fork error");exit(-1);}else if (pid == 0){// 子进程func();}else{// 父进程while (1){}}return 0;
}

 

在main函数中遇到return后还能够调用其他函数?

可以,通过atexit函数完成回调函数的注册

#include <head.h>
void func(void)
{printf("11111111111111111\n");
}
int main(int argc,const char * argv[])
{// 注册进程退出后被回调的函数atexit(func);//注册 还没调用printf("%s:%s:%d\n",__FILE__,__func__,__LINE__);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JSP技术的个人网站系统

开头语&#xff1a; 你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP JavaBeans Servlet 工具&#xff1a;Eclipse、MySQL Workbench、…

.net8 blazor auto模式很爽(五)读取sqlite并显示(2)

在BlazorApp1增加文件夹data&#xff0c;里面增加类dbcont using SharedLibrary.Models; using System.Collections.Generic; using Microsoft.EntityFrameworkCore;namespace BlazorApp1.data {public class dbcont : DbContext{public dbcont(DbContextOptions<dbcont>…

Java高频面试题整理(几万字)

&#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我不迷路 ❤️《java面试核心知识》突击系列&#xff0c;持续更新… &#x1f490; 面试必知必会学习路线&#xff1a;Java技术栈面试系列SpringCloud项目实战学习路线 &#x1f4dd;再小的收获x365天…

卷积网络热图显示

【卷积神经网络可视化】之热度图可视化_visualizing heatmaps of class activation in an ima-CSDN博客

Java中的Stream API及其应用

Java中的Stream API及其应用 Java 8引入了Stream API,这是对集合进行复杂操作的强大工具。Stream API支持函数式编程风格,能够简洁、清晰地处理集合数据。本文将详细介绍Java中的Stream API及其实际应用场景。 一、Stream API简介 Stream是元素的序列,这些元素支持顺序和…

ctfshow-web入门-命令执行(web43-web52)关于黑洞“ >/dev/null 2>1“的处理与绕过

目录 1、web43 2、web44 3、web45 4、web46 5、web47 6、web48 7、web49 8、web50 9、web51 10、web52 1、web43 在上一题 ‘黑洞’ 的基础上新增过滤&#xff1a; preg_match("/\;|cat/i", $c) 问题不大&#xff0c;我们不用分号和 cat 就行&#xff1a;…

YoloV8改进策略:卷积篇|Kan行天下之GRAM,KAN遇见Gram多项式

GRAM的灵感来自于Kolmogorov-Arnold网络&#xff08;KAN&#xff09;的替代品&#xff0c;如TorchKAN和ChebyKAN。GRAM引入了一种KAN模型的简化版本&#xff0c;但利用了Gram多项式变换的简洁性。它与其他替代品的不同之处在于其独特的离散性特征。与其他在连续区间上定义的多项…

串口触摸屏的键盘控制

&#xff08;text 属性txt_maxl 800&#xff09; ①变量loadpageid.val&#xff1a;调用页的页面ID。 ②变量loadcmpid.val&#xff1a;调用页的控件ID。 ③定时器tm0&#xff1a;让输入框有个光标不断闪烁&#xff0c;如果不需要&#xff0c;控件属性en0即可。 ④变量inputlen…

Redis Cluster 为什么不支持传统的事务模型

Redis Cluster 采用了分布式的架构&#xff0c;其设计目标主要是为了提供高可用性和可伸缩性。Redis Cluster 的数据分片存储在不同的节点上&#xff0c;每个节点负责一部分数据。传统的 Redis 单节点事务是通过 MULTI/EXEC 命令实现的&#xff0c;但 Redis Cluster 不支持跨节…

【python操作Excel的方法】

当然&#xff0c;除了openpyxl和pandas之外&#xff0c;还有其他几种方法可以用来操作Excel文件。以下是一些常见的操作Excel的方法&#xff0c;并附带了相关的数字和信息&#xff08;基于提供的参考文章&#xff09;&#xff1a; 1. 使用Excel本身的宏和VBA 优势&#xff1a…

centos意外断电的情况下linux挂载磁盘报错(已解决)

问题描述 centos意外断电的情况下linux挂载磁盘报错&#xff0c;这大致是意外断电硬盘相关meta信息还未落盘之类的导致磁盘信息对不上 通过命令 kubectl describe pod minio-5b9765594b-g4bwt得到错误信息 Warning FailedMount 47m (x5 over 47m) kubelet MountVolume.Mount…

切片(slicing)(Python)

文章目录 前言一、基本语法二、基本操作1、字符串2、列表 前言 切片&#xff08;Slicing&#xff09;是Python中对于序列类型&#xff08;如字符串、列表、字节、元组等&#xff09;的一种操作&#xff0c;用于获取序列的子部分。 一、基本语法 sequence[start:stop:step]参数…

SEO优化笔记 个人博客如何SEO设置

说实话现在个人博客越来越难做了&#xff0c;因为现在大多数的流量都被短视频吸引去了&#xff0c;当然有很多个人博客作的非常的好&#xff0c;还是有很多的流量做支撑的&#xff0c;个人也是小白站长&#xff0c;折腾网站也很久了&#xff0c;也总结了几点&#xff0c;分享非…

ABI和API的区别

ABI和API的区别 ABI&#xff08;Application Binary Interface&#xff09;&#xff1a; ABI是一种定义了二进制接口规范的概念&#xff0c;用于描述不同模块之间如何进行二进制交互。它定义了函数调用约定、参数传递方式、寄存器使用、内存布局等底层细节。ABI的目标是确保不…

C++风流和MATLAB | Python | CUDA 库埃特流泊肃叶流薄膜流体

&#x1f3af;要点 &#x1f3af;无滑移速度边界条件&#xff1a;&#x1f58a;反弹法计算库埃特流、泊肃叶流 | &#x1f58a;湿节点法计算库埃特流、泊肃叶流 | &#x1f3af;力模型&#xff1a;&#x1f58a;反弹法和不同的格子玻尔兹曼体力模型计算泊肃叶流 | &#x1f58…

自监督分类网络:创新的端到端学习方法

现代人工智能的快速发展中&#xff0c;分类任务的高效解决方案一直备受关注。今天&#xff0c;我们向大家介绍一种名为Self-Classifier的全新自监督端到端分类学习方法。由Elad Amrani、Leonid Karlinsky和Alex Bronstein团队开发&#xff0c;Self-Classifier通过优化同一样本的…

express+vue在线im实现【二】

expressvue在线im实现【一】 在线体验 本期完成了&#xff1a; 1、心跳检测 2、支持发送表情与图片【这个目前还需要优化下&#xff0c;当图片上传后会被默认选中&#xff0c;需要点击一下旁边&#xff0c;使之失去选中效果&#xff0c;才能正常&#xff0c;留待下期优化吧】…

Gone框架介绍27 - 再讲 Goner 和 依赖注入

gone是可以高效开发Web服务的Golang依赖注入框架 github地址&#xff1a;https://github.com/gone-io/gone 文档地址&#xff1a;https://goner.fun/zh/ 文章目录 Goner 和 依赖注入Goner的定义依赖标记Goners 注册Priest函数 Goner 和 依赖注入 Gone 作为一个依赖注入框架&am…

桂电人工智能学院大数据实验,使用 Docker 搭建 hadoop 集群

桂电人工智能学院大数据实验&#xff0c;使用 Docker 搭建 hadoop 集群 第一步 安装 Docker, Windows 上可以使用 Docker Desktop 下载地址&#xff1a;https://www.docker.com/products/docker-desktop/ 安装过程自行谷歌 安装好的标志&#xff1a;打开终端 运行docker p…

矩阵补全学习笔记

目录 矩阵补全概念原理 ICLR 2020 | 超越传统&#xff0c;基于图神经网络的归纳矩阵补全 因果面板数据模型的矩阵补全方法 矩阵补全概念原理 【综述】矩阵补全问题-CSDN博客 GitHub - XLearning-SCU/2022-CVPR-AirNet: PyTorch implementation for All-In-One Image Restor…