Segmentation violation: while(fgets(buffer,15,statfile)!=NUL
Segmentation violation: while(fgets(buffer,15,statfile)!=NULL){};
如果按顺序寻址 r,则此代码适用于连续数千个调用。如果随机选择 r,它连续工作几百个。
但是,在随机 r 的某个时刻,我得到了分割违规。我不确定是什么原因导致这种情况,因为它几乎一直工作正常。
*** Break *** segmentation violation
Segmentation fault
崩溃发生在fgets。
int fsize(int r, double VME, std::string* filepath) {
FILE *statfile;
std::stringstream streamfilename;
std::stringstream streamcommand;
string* filename = new string;
std::string command;
char buffer [15];
char charsize;
streamfilename.str("");
streamfilename << *filepath << "run" << r << "-" << VME << ".dat";
*filename = streamfilename.str();
streamcommand.str("");
streamcommand << "stat -c " << "%s " << *filename;
command = streamcommand.str();
const char * charcommand = command.c_str();
statfile = popen(charcommand, "r");
cout << "Test 5n";
while(fgets(buffer,15,statfile)!=NULL){}; CRASH OCCURS HERE
cout << "Test 6n";
int* filesize = new int;
*filesize = atoi(buffer);
pclose(statfile);
return *filesize;
}
分段错误的原因是什么?
statFile
可能NULL
.
如果你想得到文件大小,你应该考虑C函数:
int stat(const char *path, struct stat *buf);
它将避免分叉命令并解析其结果。
相关文章:
- 当 NUL 字符被定义为字符串的一部分时,为什么 strlen() 不计算终止 NUL 字符的字节?
- 如果字符串在 C/C++ 中没有 NUL 字符(以防编译器允许它通过)会发生什么情况?
- UWP 创建文件2 ERROR_ACCESS_DENIED "NUL"
- 使用Crypto 散列包含C 中的NUL字符的字符串
- 在redis中存储chars的向量 - 包含nul
- 比较字符串忽略 NUL
- #line 指令的 nul.h 文件名的文件路径不正确
- Segmentation violation: while(fgets(buffer,15,statfile)!=NUL
- 不以nul结尾的常量字符串文字
- 如何处理在某些元素中使用 nul char 的 CSV 行
- 从安卓客户端发送数据时,C++ 套接字接收函数中第一个字符中的 NUL 值
- std::string::operator[]的结果地址是否指向一个可写的、以nul结尾的缓冲区
- 为什么RegSetValueEx工作,即使我打破了关于会计NUL终止长度的规则
- c++中字符串中的NUL字符
- 托管/非托管c++中的wchar_t NUL
- Lex解析器:(缓冲区结束或NUL)段错误
- 当字符串包含多个NUL字符时,如何获取c_str(用于发送)
- 你是如何处理NUL的