可能这应该是超级用户,但我在代码中使用它,所以我想从这里开始。
我的C ++程序使用“system()”调用解压缩.gz文件。 (是的,我知道这是禁忌,但是当我一段时间开始这个项目时,这是最糟糕的一次,当我认为我有机会改善它时,我问Unzipping a file from C++ on Redhat: alternatives to system()但我没有'我设法实现了任何东西)
由于可能存在具有相同名称的文件,因此解压缩调用使用“-o”修饰符进行覆盖。
有没有办法检测是否存在覆盖?我愿意接受system()和解压缩的替代方案。
操作系统:Redhat
语言:C ++
IDE:Eclipse
答案 0 :(得分:0)
我相信显而易见的答案是在你运行system
命令之前尝试检测磁盘上是否有一个具有相应名称的文件;如果在解压缩之前存在文件,则会发生覆盖。您可以fopen
使用"r"
模式检查文件是否存在,并检查有效文件句柄的返回值。 (如果文件已存在,请不要忘记fclose
文件。)