[<<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 }