首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么编辑.fini_array不会改变程序的进程?

编辑.fini_array不会改变程序的进程,是因为.fini_array是ELF(可执行与可链接格式)文件中的一个特殊节(section),用于存储程序在退出时需要执行的终结函数(finalization function)的地址。这些终结函数通常用于释放资源、关闭文件、清理内存等操作。

当程序运行结束时,操作系统会自动调用.fini_array中存储的终结函数的地址,以确保程序的正常退出。这意味着无论是否编辑了.fini_array,程序的进程都会按照正常的退出流程执行终结函数,从而保证了进程的稳定性和正确性。

编辑.fini_array不会改变程序的进程的原因是,终结函数的地址是在程序加载和链接过程中确定的,而不是在运行时动态改变的。因此,无论如何修改.fini_array的内容,程序在退出时都会执行其中存储的终结函数,从而不会改变程序的进程。

需要注意的是,对于一些特殊情况,如使用动态链接库(Dynamic Linking)或者使用特定的编译选项,程序的终结函数的执行方式可能会有所不同。但总体来说,编辑.fini_array不会改变程序的进程是一个普遍适用的规则。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(Elastic Cloud Server,ECS):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务(Tencent Kubernetes Engine,TKE):https://cloud.tencent.com/product/tke
  • 腾讯云云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云人工智能平台(AI Lab):https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云移动开发平台(Mobile Development Platform,MDP):https://cloud.tencent.com/product/mdp
  • 腾讯云对象存储(Cloud Object Storage,COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(Tencent Blockchain as a Service,TBaaS):https://cloud.tencent.com/product/tbaas
  • 腾讯云元宇宙服务(Tencent Metaverse):https://cloud.tencent.com/product/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

不会装逼程序员,还怎么改变世界?|附装逼指南

也许是解决问题后满足感,正是因为这样,我们解决问题能力超乎你想象。 4.我们很单纯 我们是一群单纯而又善良猿。我们“只对技术不对人”,而且反驳对方观点,都是比较幽默不会“出口成脏”。...大家玩地不亦乐乎lol,改变世界交流方式Facebook,亦或是让你足不出户就可以订餐或淘宝软件都是出于我们创造力,总之,我们为世界创造价值。...9.和我们约会好处 优点1:我们不会骗人;没有时间去拈花惹草,当然陪你时间会相对少点。 优点2:我们很聪明,超级聪明。 优点3:惹你生气还请包容。...优点4:我们不会 bug 你,我们只会用一整天时间debug代码。 优点5:我们会多门语言,是不是很好厉害!...不过需要特别注意是,一次只能饲养一只程序猿,不要与其他萌妹纸一同饲养11.值此1024程序员节,我们愿望 作为一枚用代码改变世界,用智慧颠覆未来程序员,居然还要加班加点透支生命?NO!

1.6K70

为什么不会 C++ 不能算合格专家程序员?

1掌握 C++ 可不容易,但一旦你掌握了,就会获得丰厚回报。 通常,程序员在他们编程生涯中会使用多种编程语言。然而,我们也看到,有些程序员一直在使用同一种编程语言。...因此,现在大多数程序员都跳过了 C++ 学习,并且更喜欢那些提供更抽象开发环境现代语言。 我将解释一下,为什么学习 C++ 是所有努力成为编程专家程序必修课。...这就是为什么大多数程序员使用 Go 来构建高性能云工具,因为对云环境来说,二进制文件大小并不是问题。在高性能、轻量级软件开发方面,程序员仍然喜欢用 C++ 而不是 Go。...5与操作系统 API 交互最佳语言 每个操作系统都为开发者提供了一个可编程接口,用于处理操作系统级操作,如进程管理、文件处理、GUI 渲染和网络请求处理(通过套接字)。...C++ 是一种复杂语言——你有许多方法来解决同一个编程问题。另外,C++ 被设计成一门速度很快语言,但让程序员可以充分控制程序执行,按照自己意愿优化代码。

56650

3x17 - fini_array构造Loop以及ROP

下面用一个helloworld程序静态编译(x64)作为例子讲解简单C程序运行流程。...\n"); return 0; } 不知道初学者会不会注意,明明在第一印象中main函数处于一个“至高无上”地位,却还要在末尾return 0? 有没有想过这个返回值最后交给了谁?...Entry_point,也就是说,程序执行后最先执行是start中指令。...00000000004008B4 _start endp 可见,start在最后调用了__libc_start_main这个函数,经过查证,这是一个库函数(但是为了讲解方便这里使用了静态编译),主要功能是初始化进程以及各类运行环境...尝试构造如下结构: fini_array[0] = __libc_csu_fini fini_array[1] = target_func 这样在程序退出时候,就会循环执行 __libc_csu_fini

27710

为什么vim是程序员最喜欢文本编辑器之一

前言:程序员钟爱文本编辑器及其使用案例 在众多文本编辑器中,Vim无疑是最为人称道之一。它以其强大功能、灵活定制性以及高效操作而深受广大程序喜爱。...Vim不仅仅是一个文本编辑器,更是一种编程哲学体现,它倡导是一种追求效率、精简操作编程方式。本文将探讨Vim为何能成为程序员最喜欢文本编辑器之一,并通过一些使用案例来展示Vim强大功能。...1.Vim历史与发展 Vim起源于1988年,由Bram Moolenaar基于Bill Joyvi编辑器开发。经过多年发展,Vim已经从一个简单文本编辑器演变成一个强大编程工具。...通过这些插件,你可以将Vim打造成一个功能齐全集成开发环境。 5.结语 Vim是一个功能强大、高度可定制文本编辑器,它以其高效操作、广泛适用性和强大社区支持而受到程序喜爱。...虽然Vim学习曲线较陡,但投入时间学习Vim无疑是值得。对于追求效率和灵活性程序员来说,Vim是一个不可或缺工具。通过上述使用案例,我们可以看到Vim在实际编程工作中强大能力和灵活性。

16330

Linux下c程序内存映像

fini段:用于保存进程退出时执行程序。当进程结束时,系统会自动执行这部分代码。 init段:用于保存进程启动时执行程序。当进程启动时,系统会自动执行这部分代码。...代码块就是一对大括号{}括起来范围,所以一个变量作用域是:这个变量定义所在{}范围内从这个变量定义开始往后部分。(这就解释了为什么变量定义总是在一个函数最前面)。...C语言不会自动向堆中存放东西,堆操作是程序员自己手工操作程序员根据需求自己判断要不要使用堆内存,用时候自己申请(使用malloc函数),自己使用,完了自己释放(使用free函数释放掉)。...- 内核映射区 - (1)内核映射区就是将操作系统内核程序映射到这个区域了。 (2)对于linux中每一个进程来说,它都以为整个系统中只有它自己和内核而已。...(3)每一个进程都活在自己独立进程空间中,0-3G空间每一个进程是不同(因为用了虚拟地址技术),但是内核是唯一

3K20

应该没有程序不会用 Markdown 吧?这款开源Markdown编辑器简直是太好用了!

前言 Markdown 是一种可以使用普通文本编辑器编写标记语言,通过简单标记语法,它可以使普通文本内容具有一定格式。...Markdown 在文字爱好者和码农们那里非常受欢迎,今天和大家推荐另一款高颜值、功能强大开源 Markdown 编辑器 - Notable,Notable 一款开源高颜值、跨平台 Markdown...image.png Notable特征 Notable还为您提供了非常强大Markdown编辑器,实际上它与VS Code所使用编辑器相同,因此内置了多光标,小地图和同类最佳语法突出显示等功能。...image.png 没有供应商锁定 便笺和附件只是存储在磁盘上,这是非常便携式且功能强大:您可以使用自己喜欢编辑编辑便笺,通过Dropbox对其进行同步,在它们上运行Git,运行基于正则表达式搜索并替换它们等...如果您需要对笔记执行更复杂操作,请记住它们只是存储在磁盘上文件,因此您可以对它们进行任何操作。 image.png 分割编辑器 拆分编辑器可用于快速检查笔记在编辑呈现方式。

80920

Linux系统下刨析hello world背后秘密

理解了预处理,就明白为什么不能在头文件中定义全局变量,这是因为定义全局变量代码会存在于所有以#include包含该头文件文件中,也就是说所有的这些文件,都会定义一个同样全局变量,这样就会发生冲突。...它就是将各个目标文件,包括库文件链接成一个可执行程序。在这个过程中,在Linux环下,该工作是由GNU链接器ld完成。 2. hello world可执行程序是什么文件?...bss段用于保存没有初始值或初值为0全局变量和静态变量,当程序加载时,bss段中变量会被初始化为0。 除此之外还有其他常见段: debug段:用于保存调试信息,如果不使用-g选项,则不会生成。...fini段:用于保存进程退出时执行程序。当进程结束时,系统会自动执行这部分代码。 init段:用于保存进程启动时执行程序。当进程启动时,系统会自动执行这部分代码。...,返回值为13,它表示write成功字符数。最后调用exit_group退出程序,参数为0,说明程序退出状态。

56220

编译、链接到载入、运行大致过程----2.链接

编译完成之后,需要步骤就是 链接.编译仅仅转换源代码到二进制机器码,但是并没有把程序运行需要所有资源整合到一起,所以编译后"目标文件"是没办法直接运行;在实际项目中,通常是由多个源代码文件,...[root@www ~]# 链接命令介绍完了,但是要了解程序载入大致过程,需要对程序segment head, section head有大概了解.因为程序加载到内存时候时候会依赖segment...section 是编译时候生成,而segment是为了程序加载而存在概念;segment 通常包含有多个section....: 直接读取程序segment ,获得地址是: 0x400000~0x40adcc 通过计算segment所包含section, 获得地址是: 0x400238~0x40adcc 为什么上述两种方式得到同一个...因为程序虚拟地址空间分配是 以page为单位,而每个page大小默认为4KB.

79530

ELF文件格式简介

比如它支持不同字节序和地址范围,所以它不会不兼容某一特别的 CPU 或指令架构。这也使得 ELF 格式能够被运行于众多不同平台各种操作系统所广泛采纳。   ...ELF文件包含一个Header描述文件基本信息;程序头表告诉徐彤如何构建进程内存镜像,因此只有可执行文件由程序头表;Sections描述了链接过程中需要符号表、数据、指令等信息,而在可执行文件中是...当程序正常退出时,系统执行本节代码; .init,类型SHT_PROGBITS,属性SHF_ALLOC|SHF_EXECINSTR:存储有助于进程初始化代码可执行指令。...符号有一个绝对值,不会因为重定位而改变; SHN_COMMON:该符号标记尚未分配公共块。...符号值给出了对齐约束,类似于节 sh_addralign 成员。 也就是说,链接编辑器将为符号分配存储空间,该地址是 st_value 倍数。

2K30

黑客级别的文章:把动态库内存操作玩出了新花样!

因此,每个动态库加载地址也是固定,因此,理论上可以在第一次重定位之后,把重定位之后代码段存储下来。 这样,以后再次启动这个进程时,就不需要重定位了,加快程序启动速度。...只要其他地方逻辑没有错误,这里就算写入失败了,也不会对其他内存区域造成破坏。...先明确一个观点: 不要只从应用层程序开发角度来看待段错误,段错误不是洪水猛兽,它只是内核与用户进程一种正常交流方式。...当用户进程访问了无权限或未mmap虚拟内存地址时,内核向用户进程发送SIGSEGV信号,来通知用户进程,仅此而已。 只要段错误发生位置是可控,我们就可以在用户进程中处理它。...在 APP 开发调试阶段,SFP 应该始终被关闭,这样就不会错过由于编码失误导致段错误,这些错误是应该被修复;在正式上线后 SFP 应该被开启,这样能保证 APP 不会崩溃。

1.2K20

Linux进程管理

运行后台进程方法是在命令行最后加上 “&” 进程和作业区别: 进程:操作系统概念,由操作系统负责管理 作业:shell程序概念,由shell程序负责管理 一个操作系统可以启动多个shell程序,...还有其他几个常用命令: 注销后继续运行进程:nohup 命令 [选项] [参数] [输出文件] & 用过SpringBoot打jar包部署到Linux下同学对上面这个命令一定不会陌生啦~ 杀死进程:kill...切换到jason账户,用nice命令启动在后台启动vi编辑软件,优先级增加10,用ps命令,选项为-l观察vi进程优先级;用nice命令启动在后台启动vi编辑软件,优先级减少10,观察结果,为什么不成功...当telnet服务配置文件修改时候,xinetd服务需要知道配置文件变化,重新启动会重新读取配置文件内容,使之生效。 Telnet为什么可以看到脚本程序执行结果?...答:ntntsysv命令关闭守护进程,只是改变了当前用户运行级别的守护进程开关,具体来说,改变了3号运行级别命令行模式守护进程开关。

6.8K00

【Linux修炼】11.进程创建、终止、等待、程序替换

进程程序替换 4.1 见见猪跑 4.2 理解原理(是什么、为什么、怎么办) 4.3 一个一个调用对应方式 4.4 应用场景:模拟shell命令行解释器 本节重点 进程创建,终止,等待,进程程序替换...函数时,就会发生进程程序替换,也就是说,我们所编写代码会被我们调用execl对应磁盘内部代码覆盖,即将指定程序代码和数据覆盖自己代码和数据,执行这个新代码和数据,所以我们明白了为什么execl...那在进程程序替换时候,有没有创建新进程呢?实际上是没有,我们一开始所创建虚拟空间并不会变化。...因此,若是想实现路径改变,就需要实现进程工作目录改变,说到这里,大家也应该明白,这个当前进程工作目录也是可以修改。...改变当前路径:chdir函数 下面不废话,直接演示其是如何改变当前路径: 编译运行: 我们发现,这样就将这个进程路径改变了,也就是说如果我们再通过这个进程创建文件,就会创建到此时这个/home

6.2K00

Java多线程傻瓜入门介绍

进程和线程:以正确方式命名 现代操作系统可以同时运行多个程序。这就是为什么您可以在浏览器(程序)中阅读本文,同时在您媒体播放器(另一个程序)上听音乐。每个程序都被称为正在执行进程。...最重要是,线程通常比进程更轻:它们占用资源更少,创建速度更快,这就是为什么它们也被称为轻量级进程。 线程是使程序同时执行多个操作便捷方式。...假设您要在电影编辑器中渲染电影。编辑器可以足够聪明,可以跨多个线程传播渲染操作,每个线程处理最终影片一大块。...如果只用一个线程编写程序,整个应用程序将冻结,直到磁盘操作完成:分配给唯一线程CPU功率在等待磁盘唤醒时被浪费。当然,操作系统除此之外还运行许多其他进程,但您特定应用程序不会取得任何进展。...这使得它们中两个或更多个在同一应用程序内交换数据非常容易。例如:电影编辑器可能包含大部分包含视频时间轴共享内存。这些共享内存正被指定用于将电影渲染到文件几个工作线程读取。

50420

Linux运维工程师面试题(1)

一般情况下du显示会比ls -l显示大,这主要是因为du显示是block整数倍。为什么生成文件前就有33M数据,因为默认磁盘元数据也会占用空间。...6 硬盘明明有很多空间,为什么无法存储文件原因是所在分区inode号满了,df -i 可以查看 inode 使用情况。...使用解决办法:限制 java 进程 max heap,并且降低 java 程序 worker 数量,从而降低内存使用给系统增加 swap 空间8 进程、线程和协程区别定义:(1) 进程是系统进行资源分配和调度独立单位...区别:(1) 一个程序至少有一个进程,一个进程至少有一个线程;(2) 线程划分尺度小于进程(资源比进程少),使得多线程程序并发性高;(3) 进程在执行过程中拥有独立内存单元,而多个线程共享内存,从而极大提高了程序运行效率...\;10 su、su - 和 sudo 区别su username:非登录式切换,即不会读取目标用户配置文件,不改变当前工作目录,即不完全切换su - username:登录式切换,会读取目标用户配置文件

49630

【趣学编程】linux常用命令(二)

管道实际操作是,开启了两个子线程,将这两个子线程IO打通,用到便是IO重定向 优先级问题: echo $$ | more 会打印当时进程pid,不会打印子进程pid $...程序结果标识符 0是成功 非0是失败 为什么要这样设计?...子进程修改,父进程不会改变,子进程是修改后值 如果父进程改了,子进程没有退出情况下值会变化吗?.../exporttest.shupuptoppyfysfpyfysf 后台运行子进程,打印查看父进程值是否改变了,在父进程改变值,等待20秒睡眠,看是否子进程值变化了[root@CentOS6 shell...为什么?因为 [ 是个命令 练习题 需求:实现添加用户功能,用户名和密码相同,输入命令之后一步完成 程序自定义输出 #!

75720

深入浅出ELF

网上已经有了很多介绍ELF文章,因此本文不会花太多篇幅在SPEC复制粘贴上,而是结合实际案例和应用场景去进行说明。...内核空间 内核空间对execve处理其实可以单独用一篇文章去介绍,其中涉及到进程创建、文件资源处理以及进程权限设置等等。...; install_exec_creds(bprm)设置进程权限等信息; create_elf_tables添加需要信息到程序栈中,比如ELF auxiliary vector; 设置current...为什么要这么做呢?如果把动态链接相关代码也放到内核中,就会导致内核执行功能过多,内核理念一直是能不在内核中执行就不在内核中处理,以避免出现问题时难以更新而且影响系统整体稳定性。...interpreter又称为dynamic linker,以glibc2.27为例,它大致功能如下: 将实际要执行ELF程序内存段加载到当前进程空间中; 将动态库内存段加载到当前进程空间中;

73230

「一道面试题」输入URL到渲染全面梳理中-页面渲染篇

,需要对下面这些知识点有一个简单认知 线程/进程概念及区别 多线程/多进程概念 浏览器主要进程 浏览器为什么是多进程 渲染进程Renderer主要线程 GUI渲染线程 JS引擎线程 事件触发线程 定时触发线程...进程包括运行中程序程序所使用到内存和系统资源 CPU 可以有很多进程,我们电脑每打开一个软件就会产生一个或多个 进程为什么电脑运行软件多就会卡,是因为 CPU 给每个 进程 分配资源空间...多进程带来好处是明显,比如大家可以在网易云听歌同时打开编辑器敲代码,编辑器和网易云进程之间不会相互干扰 「多线程:」 多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同线程来执行不同任务...,也就是说允许单个程序创建多个并行执行线程来完成各自任务 JS为什么是单线程 JS单线程,与它用途有关,作为浏览器脚本语言,JavaScript主要用途是与用户互动,以及操作DOM,这决定了它只能是单线程...,就像它 left 属性可以使用百分比值,依赖于它 offset parent 所以,就算 absolute 中信息改变不会改变普通文档流中 渲染树 ,但浏览器最终绘制时,是整个复合层绘制

76120

unix命令大全详解-完整版_command方式:

UNIX命令大全详解-完整版 command方式: 任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”声音;任何输入都引起立即反映 insert方式: 任何输入数据都置于编辑寄存器。...分支语句 cb C语言整理程序 cd 改变当前目录 cc C语言编译器 cdc SCCS实用程序 cflow 生成C语言流程图 checkeq 数学公式排版命令 chgrp 改变文件组 chmod 改变文件存取模式...chown 改变文件主 chroot 改变根目录 cksum 显示校验和 clri 清除指定I节点 cmp 文件比较 col 过滤反向换行 comb SCCS实用程序 comm 显示两个排序文件公共行...中止所有活动进程 labelit 给文件系统提供标号 ld 目标文件链接编辑器 lex 词法分析程序 line 读一行 link 连接文件 lint C程序检查程序 ln 链接文件 local 建立局部变量...vi 全屏幕编辑器 volcopy 文件系统文字拷贝 wait 等待所有字进程结束 while 循环语句 who 显示谁在使用系统 whodo 显示哪些用户在做什么 write 和另一用户直接对话

1K10

CC++练习题(三)

线程可以更改从属进程 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行程序就称之为进程。...程序进程区别就在于:程序是指令集合,它是进程运行静态描述文本;进程程序一次执行活动,属于动态概念。 进程和线程主要差别在于它们是不同操作系统资源管理方式。...进程有独立地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程不同执行路径。...为什么? 其实合法,在编译之前是预编译,预编译会处理#define之流东东,在编译时这个define就没了。 第二个:程序输出什么? 程序不会输出任何东西。...ptr 真的被意想不到改变了,那么 square 就显得不会是某个数平方。

2.2K40

Linux常用指令 和 基础知识穿插巩固(巩固知识必看)

test1.c内容输入到test2.c中,改变了输出方向,所以叫输出重定向 cat test1.c >> test2.c 将test1.c内容追加到test2.c中,注意这里是追加,不会删除...在任何操作系统下都有进程,而进程概念是:执行中程序实例 Windows下进程查看:打开电脑最底部搜索框,搜索任务资源管理器,什么就会显示目前在运行程序(也可以叫做进程) 所含属性...处理方法 请各位移步该文章哦:僵尸进程处理办法 后果 会导致内存泄漏 为什么是内存泄漏呢?...STAT UID TIME COMMAND stat 显示进程状态信息 nano 一个文本编辑器,用户可以编辑文本 用法 nano 文件名 vim 一个功能强大文本编辑器,它支持多种模式,...为什么有?

3300
领券