Как узнать полный путь нового созданного файла? - PullRequest
0 голосов
/ 18 августа 2011

смотри, у меня есть одна программа, которая создает один новый файл, используя

fopen()

Теперь я хочу напечатать полный путь к этому файлу в программе ma.

Как это возможно в linux с программированием на c?

Ответы [ 3 ]

2 голосов
/ 18 августа 2011

Стандартный C сам по себе не дает никакого способа сделать это, на самом деле.Но стандарт POSIX имеет getcwd .Что бы вы сделали, это добавили путь, использованный для создания файла, к пути рабочего каталога, полученному из getcwd - если, конечно, путь, использованный для создания файла, не является абсолютным.

В качестве альтернативы,Вы можете использовать realpath .

0 голосов
/ 18 августа 2011

У вас уже есть имя файла, поэтому вопрос заключается в том, как определить, является ли это уже абсолютным или относительным путем, и превратить последний в абсолютный путь.

Если это уже абсолютный путь, строка будет начинаться с /. Если это не абсолютный путь, то вы знаете, что он относительно вашего текущего рабочего каталога. Учитывая это, вы можете определить текущий рабочий каталог вашего процесса и добавить к нему путь к файлу.

Если вы также хотите разрешить его в реальном пути (разрешить символические ссылки, удалить части . и ..), вы можете использовать функцию realpath.

0 голосов
/ 18 августа 2011

В main () вы должны получить полный путь к вашему исполняемому файлу как argv [0] .Ваш файл создан там.

Кроме того, AFAIK, прототип fopen

FILE * fopen(const char *restrict filename, const char *restrict mode);

Так что простой

fopen() 

не будет работать (если мы говорим остандарт С).

...