Обнаружение перезаписи при использовании unzip из командной строки в Redhat

Возможно, это должно быть в Superuser, но я использую его в коде, поэтому подумал, что начну здесь.

Моя программа на C ++ распаковывает файл .gz с помощью вызова "system ()". (Да, я знаю, что это табу, но это было лучшее из плохого, когда я начал этот проект некоторое время назад, и я спросил Распаковка файла с C ++ на Redhat: альтернативы system (), когда я думал, что у меня есть шанс улучшить его, но у меня нет т еще ничего не удалось реализовать)

Поскольку есть вероятность, что файл с таким именем уже существует, при вызове unzip используется модификатор «-o» для перезаписи.

Есть ли способ обнаружить перезапись? Я открыт для альтернативы system () и разархивировать.


ОС: Redhat

Язык: C ++

IDE: Eclipse


person Andy    schedule 13.10.2011    source источник
comment
Если вы используете system, а не библиотеку, поведение будет таким же, как у вызываемого приложения, и проблема больше не связана с программированием.   -  person David Rodríguez - dribeas    schedule 13.10.2011


Ответы (1)


Я считаю, что очевидным ответом было бы попытаться определить, есть ли на диске файл с соответствующим именем, еще до того, как вы запустите команду system; если файл существует до распаковки, произойдет перезапись. Вы можете легко проверить, существует ли файл, fopen указав его в режиме "r" и проверив возвращаемое значение на предмет допустимого дескриптора файла. (Не забудьте fclose файл, если он уже существует.)

person Adam Maras    schedule 13.10.2011
comment
Конечно! Извините, я вообще не думал о том, чтобы сделать это таким образом! Спасибо! - person Andy; 14.10.2011