学习笔记第二十四天

1.exec族函数的区别

  int exec l(const char *path, const char *arg, ...);
  int exec l p(const char *file, const char *arg, ...);
  int exec l e(const char *path, const char *arg,..., char * const envp[]);
  int exec v(const char *path, char *const argv[]);
  int exec v p(const char *file, char *const argv[]);
  int exec v pe(const char *file, char *const argv[], char *const envp[]);

        路径 vs 文件名

        使用完整路径(path)的函数(如execlexecvexecleexecve)需要指定可执行文件的

完整路径。

        使用文件名(file)的函数(如execlpexecvp)会根据PATH环境变量中指定的目录来搜索

可执行文件。

        参数传递方式

   l(list)后缀的函数(如execlexeclpexecle)要求将命令行参数逐个列出,并以NULL

为结束标志。

   v(vector)后缀的函数(如execvexecvpexecve)要求将命令行参数组织成一个字符指

针数组(char *const argv[]),并将这个数组的指针传递给函数。

        环境变量

        大多数exec函数使用调用进程继承的环境变量。以e(environment)结尾的函数(如

execleexecve)允许显式地传递一个新的环境变量数组给新程序。

        真正的系统调用

  execve是唯一真正的系统调用。其他exec函数都是库函数,它们最终都会调用execve

2. exit 库函数

        功能:exit 函数用于终止当前进程,并向父进程返回一个整数状态码。同时,它会刷新所有

输出流(如标准输出 stdout)的缓冲区,并调用通过 atexit 函数注册的所有清理函数(按注册顺

序的逆序调用)。

        参数:int status,表示进程的退出状态。通常,EXIT_SUCCESS(定义为0)表示成功,

而 EXIT_FAILURE(通常定义为1,但具体值取决于系统)表示某种形式的失败。

        返回值:exit 函数没有返回值,因为一旦调用,程序就会终止。

3. _exit 系统调用

        功能:_exit 是一个系统调用,用于立即终止当前进程,但与 exit 不同,它不会刷新输出流

的缓冲区,也不会调用 atexit 注册的清理函数。

        参数:与 exit 相同,int status 表示进程的退出状态。

        返回值:同样,_exit 也没有返回值,因为程序会立即终止。

4. atexit

        功能:atexit 函数用于注册一个函数,该函数将在程序正常终止(即调用 exit 或从 main 函

数返回)时自动调用。这可以用于执行必要的清理操作,如释放资源、关闭文件等。

        参数:void (*function)(void),一个指向函数的指针,该函数没有参数并返回 void

        返回值:成功时返回0,失败时返回非0值。通常,atexit 的失败很少见,因为它只是向一个

列表中添加一个函数指针。

5.创建 进程 (fork)   

          1.创建之后,父子进程各自拥有4g独立的内存空间         

           2.各自拥有自己的相关的程序的各个段 数据段,所以,各自之间对数据的改变,不会相互影响 

        3.子进程会继承父进程已打开的文件描述符 
             若,fork之前打开文件,父子进程操作同一个文件,相互间有影响
             若,fork之后打开文件,父子进程操作同一个文件,但是,因为各自拥有自己的 "文件表项",
             所以,各自按照自己的逻辑改变文件

6.进程的终止:8种情况

        1)main 中 return

         2)exit() //库函数 

        c库函数,会执行io库的清理工作,关闭所有 的流,以及所有打开的文件。

        注册清理函数(atexit)。

        3)_exit,_Exit 会关闭所有的已经打开的文件,不执行清理函数。 //系统调用 

        4) 主线程退出  

        5)主线程调用pthread_exit     

        异常终止:

        6)abort()

        7)signal   kill pid

        8) 最后一个线程被pthread_cancle
    

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

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

相关文章

硬件面试经典 100 题(31~40 题)

31、多级放大电路的级间耦合方式有哪几种?哪种耦合方式的电路零点偏移最严重?哪种耦合方式可以实现阻抗变换? 有三种耦合方式:直接耦合、阻容耦合、变压器耦合。直接耦合的电路零点漂移最严重,变压器耦合的电路可以实现…

广告资料库是什么?如何正确使用Facebook广告资料库?一文解决你的烦恼!

什么是广告资料库 广告营销领域,创意和策略的更新速度极快。为了跟上这种节奏,广告资料库应运而生,成为广告人和营销专家的重要工具。广告资料库是一个集中存储和管理广告素材、创意案例、市场数据和用户反馈的平台。它不仅帮助用户获得灵感…

掌握高可用核心:Keepalived 铸就坚不可摧的集群防线

目录 一.初识keepalived 二.VRRP工作模式 1.三种状态 2.选举机制 三.Keepalived 架构 四. Keepalived环境准备 五.KeepAlived 配置说明 1.配置文件组成部分 2.配置语法说明:全局配置 3.配置虚拟路由器 4.启用keepalived日志功能 5.实现独立子配置文件 六…

Adobe PhotoShop - 制图操作

1. 排布照片 菜单 - 视图 - 对齐:打开后图层将会根据鼠标的移动智能对齐 菜单 - 视图 - 标尺:打开后在页面出现横纵标尺,方便图层的对齐与排列 2. 自动生成全景照 在日常处理中,我们常常想要将几张图片进行拼接获得一张全景图&…

SpringBoot快速入门(手动创建)

目录 案例:需求 步骤 1 创建Maven项目 2 导入SpringBoot起步依赖 3 定义Controller 4 编写引导类 案例:需求 搭建简单的SpringBoot工程,创建hello的类定义h1的方法,返回Hello SpringBoot! 步骤 1 创建Maven项目 大家&…

【多线程-从零开始-柒】单例模式,饿汉和懒汉模式

单例模式:是一种设计模式 设计模式,类似于“棋谱”,就是固定套路,针对一些特定的场景,给出一些比较好的解决方法只要按照设计模式来写代码,就可以保证代码不会太差,保证代码的下限 设计模式 设…

力扣面试经典算法150题:罗马数字转整数

罗马数字转整数 今天的题目是力扣面试经典150题中的数组的简单题: 罗马数字转整数 题目链接:https://leetcode.cn/problems/roman-to-integer/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 将一个罗马数字转换成相应的整数。输入是一…

Docker 日志管理

一、ELK -Filebeat Elasticsearch 数据的存储和检索 常用端口: 9100:elasticsearch-head提供web访问 9200:elasticsearch与其他程序连接或发送消息 9300:elasticsearch集群状态 Logstash 有三个组件构成input,fi…

QT输入组、QT显示组

目录 QT输入组 ​编辑 Combo Box(下拉菜单部件) Font Combo Box(显示系统中可用的字体) Line Edit(行编辑器) Text Edit(文本编辑器) Plain Text Edit(纯文本编辑…

MySQL基础练习题39-商品销售明细表1

目录 题目 准备数据 分析数据 总结 题目 求2024-01-01 每个门店 每个商品 的 销售单量, 销售数量, 销售金额, 线上单量, 线下单量 准备数据 -- 创建库 create database db_2; use db_2;-- 创建商品销售明细(核销)天表 CREATE TABLE dwm_sold_goods_sold_dtl_i (trade_da…

Apple 智能基础语言模型

Introducing Apple’s On-Device and Server Foundation Models technical details June 10, 2024 在2024年的全球开发者大会上,苹果推出了Apple Intelligence,这是一个深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统。Apple Intelligen…

25届秋招网络安全面试资料库

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

步进电机驱动笔记1:STM32+DRV8825模块_初步驱动42步进电机

今日学习使用STM32 F103C8T6 与DRV8825模块 驱动42步进电机 本文就简单地用单片机驱动一下,不去了解更深层次的东西,只求能转就行的那种... 文章提供测试代码讲解、完整工程下载、测试效果图 目录 需要准备的模块: DRV8825步进电机驱动器​…

8G显存玩转书生大模型

基础任务 使用 Cli Demo 完成 InternLM2-Chat-1.8B 模型的部署,并生成 300 字小故事,记录复现过程并截图。 尝试很多方法无解后在网页端重新输入: import torch from transformers import AutoTokenizer, AutoModelForCausalLM使用了Tran…

科普| 网络安全知多少?什么是网络安全?网络安全为何重要?

古语有云:“千里之堤,溃于蚁穴。” 此言非但道出了细微之处见真章的哲理,亦在今日之世,隐隐映射出网络安全之于国家、社会乃至个人生活的重要性。 在数字化浪潮汹涌澎湃的今天,网络已如血脉般渗透进每一个角落&#…

C:每日一题:单身狗

​​​​ 一、题目: 在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。 整型数组 int arr[ ] {1,1,2,2,3,4,4} 二、思路分析: 1.,明确目标,选择…

C++相关内容模块

C相关内容模块 单例模式&#xff0c;实现创建类中的对象&#xff0c;保证该类只能实例化一个唯一的对象 单例模式&#xff0c;实现创建类中的对象&#xff0c;保证该类只能实例化一个唯一的对象 #define _CRT_SECURE_NO_WARNINGS // 抑制 C4996 警告 #include<iostream>…

8月echarts记录-雷达图tooltip实现单轴显示、解决柱状/折线图点击非图表图形元素不会触发事件、多柱形图点击选中改变背景颜色等

8月echarts记录-雷达图tooltip实现单轴显示、解决柱状/折线图点击非图表图形元素不会触发事件、柱形图点击选中改变背景颜色等 雷达图tooltip实现单轴显示问题描述解决方案 解决柱状/折线图点击非图表图形元素不会触发事件问题描述解决方案1. 使用API convertFromPixel和getZr实…

Redis17-服务端优化

目录 持久化配置 慢查询 什么是慢查询 如何查看慢查询 命令及安全配置 内存配置 集群优化 持久化配置 Redis的持久化虽然可以保证数据安全&#xff0c;但也会带来很多额外的开销&#xff0c;因此持久化请遵循下列建议&#xff1a; 用来做缓存的Redis实例尽量不要开启持…

一文讲清三极管

说明 下图是一个NPN型的三极管 由于发射极正偏,发射极的多数载流子(无论是P的空穴还是N的自由电子)会不断扩散到基极,并不断从电源补充多子,形成发射极电流IE。由于基极很薄,且基极的多子浓度很低,所以从发射极扩散过来的多子只有很少一部分和基极的多子复合形成基极电…