linux C++可执行文件运行后,为什么无法被替换?(Text file busy)“文件被锁定”(File Locking)“文件占用”(File In Use)

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux C++可执行文件运行后,为什么无法被替换?(Text file busy)“文件被锁定”(File Locking)“文件占用”(File In Use)相关的知识,希望对你有一定的参考价值。

今天,跑程序的时候,想把可执行文件删除,提示cp: cannot create regular file '/ky/alg/kyai_rest': Text file busy


我把程序停了,就能拷贝过去了。。


在C++程序运行期间,操作系统会将可执行文件读入内存,因此程序运行时并不需要一直保留可执行文件。因此,在程序运行时,可以将可执行文件删除。

但是,需要注意的是,如果程序在运行期间需要动态链接库或其他资源,那么这些资源必须仍然存在于计算机上,否则程序可能会出现运行时错误。

另外,在某些情况下,可能需要在程序运行时动态加载和链接一些库,这些库可能位于可执行文件所在的目录中。如果删除可执行文件,那么这些库可能无法被正确加载和链接,从而导致程序无法正常运行。(我的程序就用dlopen加载了动态库)

因此,一般来说,为了保证程序的正常运行,最好在程序运行期间不要删除可执行文件,而是在程序退出后再进行删除。

以上是关于linux C++可执行文件运行后,为什么无法被替换?(Text file busy)“文件被锁定”(File Locking)“文件占用”(File In Use)的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何运行可执行文件

C++ 可执行文件在运行时找不到库,即使它位于 /usr/lib 中(在 Linux 上)

首次执行时无法运行已编译的 C++ 程序

如何通过 Makefile 将 cap_net_raw 功能添加到 Linux 上的 c++ 可执行文件

Linux无法增加执行权限,使用chmod 777 XXX后无效

stat() 在 C++ 中找不到文件