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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

40: args = 5;

41: } else if(!strcmp(argv[2], "p")) {

42: mode |= S_IFIFO;

43: args = 3;

44: } else {

45: fprintf(stderr, "неизвестный тип узла %s\n", argv[2]);

46: return 1;

47: }

48:

49: /* args сообщает, сколько аргументов ожидается, поскольку нам нужно

50: больше информации при создания устройств, чем именованных каналов*/

51: if (argc != args) usage();

52:

53: if (args == 5) {

54: /* получить старший и младший номера файла устройств,

55: который нужно создать */

56: major = strtol(argv[3], &end, 0);

57: if (*end) {

58: fprintf(stderr,"неверный старший номер %s\n", argv[3]);

59: return 1;

60: }

61:

62: minor = strtol(argv[4], &end, 0);

63: if (*end) {

64: fprintf(stderr, "неверный младший номер %s\n", argv[4]);

65: return 1;

66: }

67: }

68:

69: /* если создается именованный канал, то финальный параметр

70: игнорируется */

71: if (mknod(path, mode, makedev(major, minor))) {

72: fprintf(stderr, "вызов mknod не удался : %s\n", strerror(errno));

73: return 1;

74: }

75:

76: return 0;

77: }

11.4.2. Создание жестких ссылок

Когда множество имен файлов в файловой системе ссылаются на единственный inode, такие файлы называют жесткими ссылками(hard links) на него. Все эти имена должны располагаться на одном физическом носителе (обычно это значит, что они должны быть на одном устройстве). Когда файл имеет множество жестких ссылок, все они равны — нет способа узнать, с каким именем первоначально был создан файл. Одно из преимуществ такой модели заключается в том, что удаление одной жесткой ссылки не удаляет файл с устройства — он остается до тех пор, пока все ссылки на него не будут удалены. Системный вызов link()связывает новое имя файла с существующим inode.

#include

int link(const char *origpath, const char *newpath);

Параметр origpathссылается на существующее путевое имя, a newpathпредставляет собой путь для новой жесткой ссылки. Любой пользователь может создавать ссылку на файл, к которому у него есть доступ по чтению, до тех пор, пока он имеет право записи в каталоге, в котором ссылка создается, и право выполнения в каталоге, в котором находится origpath. Только пользователь root имеет право создавать жесткие ссылки на каталоги, но поступать так — обычно плохая идея, поскольку большинство файловых систем и некоторые утилиты не работают с ними достаточно хорошо — они полностью их отвергают.

11.4.3. Использование символических ссылок

Символические ссылки — это более гибкий тип ссылок, чем жесткие, но они не дают равноправного доступа к файлу, как это делают жесткие. В то время как жесткие ссылки разделяют один и тот же inode, символические ссылки просто указывают на другие имена файлов. Если файл, на который указывает символическая ссылка, удаляется, то она указывает на несуществующий файл, что приводит к появлению висячих ссылок. Использование символических ссылок между подкаталогами — обычная практика, и они могут также пересекать границы физических систем, чего не могут жесткие ссылки.

Почти все системные вызовы, которые обращаются к файлам по путевым именам, автоматически следуют по символическим ссылкам для поиска правильного inode. Ниже перечислены вызовы, которые не следуют по символическим ссылкам.

chown()

lstat()

readlink()

rename()

unlink()

Символически ссылки создаются почти так же, как жесткие, но при этом используется системный вызов symlink().

#include

int symlink(const char *origpath, const char *newpath);

Если вызов успешен, создается файл newpathкак символическая ссылка, указывающая на oldpath(часто говорят, что newpathсодержит в качестве своего значения oldpath).

Поиск значения символической ссылки немного сложнее.

#include

int readlink(const char *pathname, char *buf, size_t bufsiz);

Буфер, на который указывает buf, наполняется содержимым символической ссылки pathnameдо тех пор, пока хватает длины buf, указанной в bufsizeв байтах. Обычно константы PATH_MAXприменяется в качестве размера буфера, поскольку она должна быть достаточно большой, чтобы уместить содержимое любой символической ссылки [49] Хотя не гарантировано, что PATH_MAX будет достаточно велик, но для большинства практических целей она подходит. Если вы имеете дело с патологическими случаями, то должны вызывать readlink() последовательно, увеличивая буфер, до тех пор, пока readlink() не вернет значение меньше чем bufsiz . . Одна странность функции readlink()связана с тем, что она не завершает строку, которую записывает в buf, символом '\0', поэтому bufне содержит корректную строку С, даже если readlink()выполняется успешно. Вместо этого она возвращает количество байт, записанных в bufв случае успеха и -1— при неудаче. Из-за этой особенности код, использующий readlink(), часто выглядит так, как показано ниже.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x