Майкл Джонсон - Разработка приложений в среде Linux. Второе издание

Здесь есть возможность читать онлайн «Майкл Джонсон - Разработка приложений в среде Linux. Второе издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: Вильямс, Жанр: ОС и Сети, Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Разработка приложений в среде Linux. Второе издание: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Разработка приложений в среде Linux. Второе издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.

Разработка приложений в среде Linux. Второе издание — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Разработка приложений в среде Linux. Второе издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

41: if (strchr(argv[1], 'N') ) flags |= EXT3_NODUMP_FL;

42:

43: /* пройти по всем именам в argv[] */

44: while (*(++filename)) {

45: /* В отличие от нормальных атрибутов, атрибута ext3 можно опрашивать,

46: только если есть файловый дескриптор (имя файла не годится).

47: Для выполнения запроса атрибутов ext3 нам не нужен доступ на запись,

48: поэтому O_RDONLY подойдет. */

49: fd = open(*filename, O_RDONLY);

50: if (fd < 0) {

51: fprintf(stderr, "невозможно открыть %s:%s\n", *filename,

52: strerror(errno));

53: return 1;

54: }

55:

56: /* Установить атрибуты в соответствии с переданными

57: флагами. */

58: if (ioctl(fd, EXT3_IOC_SETFLAGS, &flags)) {

59: fprintf(stderr, "Сбой ioctl в %s:%s\n", *filename,

60: strerror(errno));

61: return 1;

62: }

63: close(fd);

64: }

65:

66: return 0;

67: }

11.4. Манипулирование содержимым каталогов

Вспомните, что компоненты каталогов (имена файлов) — это ни что иное, как указатели на дисковые информационные узлы (on-disk inodes); почти вся важная информация, касающаяся файла, хранится в его inode. Вызов open()позволяет процессу создавать компоненты каталогов, которые являются обычными файлами, но для создания файлов других типов и для манипулирования компонентами каталогов могут понадобиться другие функции. Функции, которые позволяют создавать, удалять и выполнять поиск каталогов, описаны в главе 14; файлы сокетов — в главе 17. В настоящем разделе раскрываются символические ссылки, файлы устройств и FIFO.

11.4.1. Создание входных точек устройств и именованных каналов

Процессы создают файлы устройств и именованных каналов в файловой системе с помощью вызова mknod().

#include

#include

int mknod(const char *pathname, mode_t mode, dev_t dev);

pathname— это имя файла, который нужно создать, mode— это и режим доступа (который модифицируется текущим umask), и тип нового файла ( S_IFIFO, S_IFBLK, S_IFCHR). Последний параметр, dev, содержит старший (major) и младший (minor) номера создаваемого устройства. Тип устройства (символьное или блочное) и старший номер устройства сообщают ядру, какой драйвер устройств отвечает за операции с этим файлом устройства. Младший номер используется внутри драйвером устройства, чтобы различать отдельные устройства среди многих, которыми он управляет. Только пользователю root разрешено создавать файлы устройств; именованные же каналы могут создавать все пользователи.

Заголовочный файл представляет три макроса для манипулирования значениями типа dev_t. Макрос makedev()принимает старшие номера в первом аргументе, младшие — во втором и возвращает значение dev_t, ожидаемое mknod(). Макросы major()и minor()принимают значение типа dev_tв качестве единственного аргумента и возвращают, соответственно, старший и младший номер устройства.

Программа mknod, доступная в Linux, предоставляет пользовательский интерфейс к системному вызову mknod()(подробности см. в man 1 mknod). Ниже приведена упрощенная реализация mknodдля иллюстрации системного вызова mknod(). Следует отметить, что программа создает файл с режимом доступа 0666 (предоставляя право на чтение и запись всем пользователям) и зависит от системной установки umask процесса для получения прав доступа.

1: /* mknod.с */

2:

3: /* Создать устройство или именованный канал, указанный в командной строке.

4: См. подробности о параметрах командной строки

5: на man-странице mknod(1). */

6:

7: #include

8: #include

9: #include

10: #include

11: #include

12: #include

13: #include

14:

15: void usage(void) {

16: fprintf (stderr, "использование: mknod <���путь> [b | с | u | p]"

17: "<���старший> <���младший>\n");

18: exit(1);

19: }

20:

21: int main(int argc, const char **argv) {

22: int major = 0, minor = 0;

23: const char *path;

24: int mode = 0666;

25: char *end;

26: int args;

27:

28: /* Всегда необходимы, как минимум, тип создаваемого inode

29: и путь к нему. */

30: if (argc < 3) usage();

31:

32: path = argv[1];

33:

34: /* второй аргумент указывает тип создаваемого узла */

35: if (!strcmp(argv[2], "b")) {

36: mode | = S_IFBLK;

37: args = 5;

38: } else if (!strcmp(argv[2] , "с") || !strcmp(argv[2], "u")) {

39: mode |= S_IFCHR;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Разработка приложений в среде Linux. Второе издание»

Представляем Вашему вниманию похожие книги на «Разработка приложений в среде Linux. Второе издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Геше Джампа Тинлей - Лоджонг (второе издание)
Геше Джампа Тинлей
Алексей Филатов - Люди «А». Второе издание
Алексей Филатов
Отзывы о книге «Разработка приложений в среде Linux. Второе издание»

Обсуждение, отзывы о книге «Разработка приложений в среде Linux. Второе издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x