在Linux系统中,如果一个正在运行的二进制程序被覆盖(即,文件内容被新的编译版本替换),通常情况下运行中的程序不会受到影响。这是因为当程序启动时,它的可执行文件内容会被加载到内存中,操作系统会维护对这些数据的引用,并且即便原始的文件系统上的可执行文件被覆盖或删除,这些内存映射通常仍然有效。
但是,替换正在运行的二进制文件并不会影响到当前运行中的进程,但会影响后续启动的进程,因为后续运行的文件就会使用文件的最新版本进行运行。
此外,面试的时候可以加上一个和共享库的区别:共享库一般依赖于动态链接,所以如果在保证兼容性的情况下是可以进行热更新的,就是更新文件的同时更新程序,但是这要和程序本身做区分