这两天每次线上提交都是`Runtime Error`,经过比赛交流群内咨询说可能是文件权限问题或者是内存炸了。于是先用自己生成的300w条数据进行压力测试,成功通过后排出内存爆炸可能。后来发现是文件权限问题,于是将读取文件函数和写入文件函数分别改成以下形式:
~~~c++
const char *testDataPath = "/data/test_data.txt", *resultPath = "/projects/student/result.txt";
int fileHandle = open(testDataPath, O_RDONLY); // Read file.
struct stat statBuffer{};
stat(testDataPath, &statBuffer);
uint64_t dataFileLength = statBuffer.st_size; // Get file length.
...
int fileHandle = open(filePath, O_RDWR | O_CREAT, 0666); // Write file.
write(fileHandle, ... , ...);
~~~
经过在普通用户权限的EulerOS服务器上的测试,发现读取文件仍然需要有`read`和`execute`权限才能正确读取,且创建的`result.txt`文件权限并不是`0666`而是`0600`。
百思不得其解,希望老师能帮忙解决。


已经3次RE的倒霉蛋表示基本上是内存的问题……
Particle_G
2020-4-13 21:44
有别的c/c++队伍也遇到类似的权限问题么……这种情况该怎么解决啊
华为云账号:hw0610397(Particle_G)
lgj@大赛答疑
2020-4-14 10:43