c++ - 为什么这个将可执行文件重命名为临时文件的片段不能按预期工作?

标签 c++ file temporary

我假设在下面的代码片段中,文件将被重命名为临时文件,然后在执行完成后消失。但它不是那样工作的,运行后可执行文件仍然存在。

难道文件不能在运行时重命名吗?

#include <iostream>

int main(int argc_, char** argv_)
{
    char rename_path_buffer[L_tmpnam_s];
    tmpnam_s(rename_path_buffer, L_tmpnam_s);

    rename(argv_[0], rename_path_buffer);
}

最佳答案

文件在执行时被锁定以防止重命名。
尝试在它运行时手动重命名它,你会得到相应的错误信息;或检查重命名函数的返回值。

关于c++ - 为什么这个将可执行文件重命名为临时文件的片段不能按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590209/

相关文章:

c++ - 如何在 Python 中实现 C++ 类,以供 C++ 调用?

java - 加快文件读取

ruby - 将十六进制字符串添加到二进制文件的内容之前

c++ - 使用 Qt C++ 读取 CSS 文件

sql-server - 临时表 - 允许的最大行值数为 1000

C++ 函数返回一个右值,但可以分配一个新值?

file - Map在Hadoop下运行时应该把临时文件放在哪里

c++ - 在这种情况下,运算符 [ ] 重载如何工作?

c++ - 解决类不平衡 : scaling contribution to loss and sgd

c++ - 关于 C++ 中异常的虚函数