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

Why won't this snippet, to rename the executable to a temporary file, work as expected?

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

之后仍然存在

在 运行ning 期间不能重命名文件吗?

#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);
}

文件在执行时被锁定,不能重命名。
尝试在运行时手动重命名,会得到相应的错误信息;或检查重命名函数的 return 值。