std :: fstream не будет открывать файл текущего процесса, но open () будет? - PullRequest
0 голосов
/ 05 августа 2010

Я пытаюсь открыть исполняемый файл текущего процесса для операций чтения-записи (у меня есть дополнительные данные, прикрепленные к исполняемому файлу), однако std :: fstream не откроет файл в ios :: in |IOS :: Out |Режим ios :: binary, хотя open () будет (с установленным флагом O_RDWR).

Кто-нибудь знает, почему std :: fstream не будет открывать файл, а open () - и если да, то как?Я могу получить std :: fstream, чтобы открыть файл?

Ответы [ 2 ]

1 голос
/ 05 августа 2010

Скорее всего, это связано с семантикой обмена файлами. См. эту ветку , в которой рассматривается аналогичный вопрос - и там есть ответ: «Концепция защиты файлов, общего доступа к файлам и прав доступа к файлам зависит от ОС, поэтому она не рассматривается в стандарте C ++».

0 голосов
/ 05 августа 2010

Интересно, если где-нибудь, под капотом, версия std::fstream вызывает open - я бы поспорил.Вы пытались в любом случае проверить errno или, возможно, запустить strace, чтобы увидеть, что, если есть ошибки, возвращает системный вызов?

...