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)的主要内容,如果未能解决你的问题,请参考以下文章
C++ 可执行文件在运行时找不到库,即使它位于 /usr/lib 中(在 Linux 上)
如何通过 Makefile 将 cap_net_raw 功能添加到 Linux 上的 c++ 可执行文件