精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
用wifstream打开log文件,is_open()返回失败,不能打开文件,不能读取文件中内容。文件名检查多次没有问题,输出errno为2,意思是:ENOENT(No such file or directory)错误。
开始以为是wifstream这类C++处理文件机制有问题,从相对路径改为绝对路径,还是报ENOENT(No such file or directory)错误。
在wifstream代码上面还有个stat函数,用于读取文件信息,把stat的结果也输出下,发现也是同样错误ENOENT(No such file or directory)错误,这就犯难了,C++机制不行,C语言函数也不行,文件明明在,就是打不开。
中午休息后,再想问题,觉得是环境不行,就换环境,把目标文本文件用cat导出内容到新文件里,用代码读新文件名就没问题,再读旧文件名还是不行,就把新文件覆盖到旧文件上,让代码能跑起来再说。
我的VM虚拟机里运行的是国产Linux操作系统Kylin,用XManager连接Kylin传输文件,后来我用Xftp再次上传目标文件到kylin里,执行代码还是报同样错误:ENOENT(No such file or directory)错误。下结论是上传的用编程打不开,用gedit和cat是没问题,然后cat转其它文件再同样文件名转回来就编程读没问题,相当于代码没动,在kylin系统内创建的文件可以,xftp上传的不行。
后来想着运行环境下,访问的目标文件不是xftp上传的,也是系统内生成的,所以就不再追究这个问题了,只要不影响系统运行,就不要投入精力了。