[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Выделение имени родительской директории из путевого имени - Пример
Следующая страница приводит пример использования dirname(3G). Пример
работает так:
13-14 Пользователю предлагается ввести путевое имя файла, который
нужно открыть для чтения.
16 Функцией strdup(3C) создается копия имени. Указатель на копию
сохраняется в pathcopy.
17 Текущая директория устанавливается равной директории, в которой
находится требуемый файл.
22 Распечатывается текущая директория.
24 Файл, находящийся в этой директории, открывается для чтения.
Эта программа демонстрируется так:
$ dirname
Enter path name:
/instr/jrs/units/unit15
/instr/jrs/units
Файл: dirname.c
ВЫДЕЛЕНИЕ ИМЕНИ РОДИТЕЛЬСКОЙ ДИРЕКТОРИИ ИЗ ПУТЕВОГО ИМЕНИ - ПРИМЕР
1 #include <string.h>
2 #include <unistd.h>
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <fcntl.h>
6 #include <libgen.h>
7
8 main()
9 {
10 char path[100], *pathcopy;
11 int fd;
12
13 printf("Enter path name: \n");
14 gets(path);
15
16 pathcopy = strdup(path);
17 if (chdir(dirname(pathcopy)) == -1) {
18 fprintf(stderr, "can't change directory\n");
19 exit(1);
20 }
21
22 system("pwd");
23
24 fd = open(basename(path), O_RDONLY);
25
26 /* read from file */
27
28 close(fd);
29 }