我在开发时经常遇到这种情况,我运行一个二进制文件,a.out
在后台说,因为它做了一些冗长的工作。在这样做的同时,我对生成a.out
并a.out
再次编译的 C 代码进行了更改。到目前为止,我没有遇到任何问题。正在运行的进程a.out
继续正常运行,永远不会崩溃,并且始终运行它最初启动时的旧代码。
但是,说a.out
是一个巨大的文件,可能与 RAM 的大小相当。在这种情况下会发生什么?并且说它链接到一个共享对象文件,libblas.so
如果我libblas.so
在运行时修改了怎么办?会发生什么?
我的主要问题是 - 操作系统是否保证当我运行时a.out
,原始代码将始终按照原始二进制文件正常运行,无论.so
它链接到的二进制文件或文件的大小如何,即使这些.o
和.so
文件在运行期间被修改运行?
我知道有这些问题可以解决类似的问题:https : //stackoverflow.com/questions/8506865/when-a-binary-file-runs-does-it-copy-its-entire-binary-data-into-memory -at-once如果在执行期间编辑脚本会发生什么? 如何在程序运行时进行实时更新?
这帮助我对此有更多了解,但我认为他们并没有问我到底想要什么,这是在执行期间修改二进制文件的结果的一般规则
mv
如果目录不存在,则此问题要求在使用时创建目录的最佳方法。我的问题是为什么这不是 的内置功能mv
?是否有一些根本原因导致这不是一个好主意?
假设我有命令A
和命令,B
但我想B
在键入时运行,A
反之亦然。我试过了
alias A='B'
alias B='A'
Run Code Online (Sandbox Code Playgroud)
但这似乎出于某种原因不起作用。
我该怎么做呢?
编辑:
命令B
实际上已在 my 中定义为函数.bashrc
,因此
alias A='command B'
alias B='command A'
Run Code Online (Sandbox Code Playgroud)
没有按照建议工作。
我想我可以更新的问题说,A
而且B
也可能是在bash定义的功能。