C 在程序执行期间编辑源

C 在程序执行期间编辑源,c,unix,gcc,compilation,C,Unix,Gcc,Compilation,我有一个C程序,它从不同的文件调用多个函数,在编译过程中,我将所有的目标文件链接在一起,生成二进制文件。然后我开始执行程序。现在我想编辑各种文件的源代码并编译新版本。这将覆盖旧的对象和二进制文件 这样做会影响当前程序的执行吗?它现在会链接新的对象文件吗?如果我覆盖正在运行的二进制文件,这会导致执行停止,或者以其他方式影响它吗?或者代码是否存储在执行开始时无法覆盖的位置 我正在使用gcc编译代码。在Unix上,让gcc替换可执行文件对正在运行的程序没有影响 它的工作方式是,只要程序在运行,旧的可执

我有一个C程序,它从不同的文件调用多个函数,在编译过程中,我将所有的目标文件链接在一起,生成二进制文件。然后我开始执行程序。现在我想编辑各种文件的源代码并编译新版本。这将覆盖旧的对象和二进制文件

这样做会影响当前程序的执行吗?它现在会链接新的对象文件吗?如果我覆盖正在运行的二进制文件,这会导致执行停止,或者以其他方式影响它吗?或者代码是否存储在执行开始时无法覆盖的位置


我正在使用gcc编译代码。

在Unix上,让
gcc
替换可执行文件对正在运行的程序没有影响


它的工作方式是,只要程序在运行,旧的可执行文件就会一直保留在磁盘上,以便操作系统可以在需要时引用它。不再有指向旧可执行文件的目录条目,当程序的旧实例停止时,磁盘空间将被回收。

如果我使用“系统”功能调用外部程序,那么在执行过程中编辑该程序会影响程序执行吗?@JTS:对不起,但我很难理解你的问题。你想达到什么目的?对不起,让我说清楚一点。我有一个可执行文件'foo',和一个c程序'bar.c',以及'bar.c'的内部,我调用'system(“/foo”);'。我编译并运行“bar.c”。如果我现在覆盖'foo',这会影响'bar'的执行吗?@JTS:No,它不会影响(但是对
system(“./foo”)
的任何后续调用将拾取新的可执行文件)。