C plus plus代码的codereview中,针对“临时目录是否唯一”的问题,需要检查哪些点?举具体非stl代码一一说明。需要有正确代码以及错误代码示例。同时列举业界标准做法代码并说明。
时间: 2023-02-14 14:52:48 浏览: 83
在 C++ 代码的 codereview 中,针对“临时目录是否唯一”的问题,需要检查以下几点:
1. 确保临时目录是否正确创建,需要检查代码中是否使用了正确的函数,如 mktemp() 或 tmpnam()。
2. 确保临时目录是否唯一,需要检查代码中是否使用了唯一的目录名称。
3. 确保临时目录在使用后能够被正确删除,需要检查代码中是否使用了 remove() 或 rmdir() 函数。
正确代码示例:
```C++
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
char temp_dir[] = "/tmp/tempdirXXXXXX";
if (mkdtemp(temp_dir) == NULL) {
perror("mkdtemp");
return 1;
}
cout << "temp dir: " << temp_dir << endl;
if (rmdir(temp_dir) == -1) {
perror("rmdir");
return 1;
}
return 0;
}
```
错误代码示例:
```C++
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
char temp_dir[] = "/tmp/tempdir";
if (mkdir(temp_dir, 0700) == -1) {
perror("mkdir");
return 1;
}
cout << "temp dir: " << temp_dir << endl;
if (rmdir(temp_dir) == -1) {
perror("rmdir");
return 1;
}
return 0;
}
```
业界标准做法代码示例:
```C++
#include <iostream>
#include <filesystem>
using namespace std;
int main() {
auto temp_dir = filesystem::temp_directory_path() / filesystem::unique_path();
filesystem::create_directory(temp_dir);
cout << "temp dir: " << temp_dir << endl;
filesystem::remove(temp_dir);
return 0;
}
```
可以发现
阅读全文