我有一个在linux服务器上运行的c ++代码.在代码中,我使用函数unlink(filename)删除文件.由代码本身生成的临时文件将被成功删除.但是我手动放的文件,我的代码无法删除它们.可能是什么原因?
试试这个:
#include <errno.h>
#include <string.h>
Run Code Online (Sandbox Code Playgroud)
...
if (unlink(filename) == -1) {
fprintf(stderr, "File '%s' unlink error (%d): %s\n", filename, errno, strerror(errno));
// or just use perror("unlink") for less customizable error message
// note: calling other functions before printing may change errno value
}
Run Code Online (Sandbox Code Playgroud)
产生的错误消息应该揭示问题所在.
这是errno手册页,unlink手册页将告诉它可以返回什么错误.
嗯,因为这实际上是一个C++的问题,你可以和可能应更换fprintf同std::cerr,但在这种情况下,可能有必要先不要int errtmp = errno和使用,为避免搞乱的iostream它它就会被检测之前.
::unlink(filename)如果你想明确它是顶级命名空间中的符号,你也可以写,至少有些人认为即使没有必要也是好的做法.