1、背景
最近写了一个小程序,读取相对路径下的文件,部分代码如下:
gdb调试均ok,于是放到crontab中去运行。结果第二天过来看,发现程序依然在跑着?!擦,肯定是有shi循环了。bool read(const char*path) { ifstream fin(path); string strLine; while(!fin.eof()) { getline(fin, strLine); if(strLine.empty()) { continue; } } fin.close(); return true; } int main(void) { read("./config.ini"); return 0; }
2、问题
<咋回事呢?gdb调试一切ok,貌似木有问题啊。没办法,祭出利器——log调试。发现程序一直在while(!fin.eof())处纠结(一直返回false),蛋疼……为啥呢?
亲(擦,淘宝体了),如果config.ini文件不存在,程序会形成死循环,fin.eof()永远返回false。
但是config.ini文件明明是存在的啊,gdb也是ok的。各种头疼,囧,org……