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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Рассмотрим простую программу, которая отображает информацию из lstat()для каждого имени файла, переданного в аргументе. Она иллюстрирует, как использовать значения, возвращенные семейством функций stat().

1: /* statsamp.с */

2:

3: /* Для каждого имени файла, переданного в командной строке, отображаем

4: всю информацию, которую возвращает lstat() для файла. */

5:

6: #include

7: #include

8: #include

9: #include

10: #include

11: #include

12: #include

13: #include

14:

15: #define TIME_STRING_BUF 50

16:

17: /* Пользователь передает buf (минимальной длины TIME_STRING_BUF) вместо

18: использования статического для функции буфера, чтобы избежать применения

19: локальных статических переменных и динамической памяти. Никаких ошибок

20: происходить не должно, поэтому никакой проверки ошибок не делаем. */

21: char *time String (time_t t, char *buf) {

22: struct tm *local;

23:

24: local = localtime(&t);

25: strftime(buf, TIME_STRING_BUF, "%c", local);

26:

27: return buf;

28: }

29:

30: /* Отобразить всю информацию, полученную от lstat() по имени

31: файла как единственному параметру. */

32: int statFile(const char *file) {

33: struct stat statbuf;

34: char timeBuf[TIME_STRING_BUF];

35:

36: if (lstat(file, &statbuf)) {

37: fprintf(stderr, "не удалось lstat %s: %s\n", file,

38: strerror(errno));

39: return 1;

40: }

41:

42: printf("Имя файла : %s\n", file);

43: printf("На устройстве: старший %d/младший %d Inode номер: %ld\n" ,

44: major(statbuf.st_dev), minor(statbuf.st_dev),

45: statbuf.st_ino);

46: printf ("Размер : %-101d Тип: %07o"

47: "Права доступа : %05o\n", statbuf.st_size,

48: statbuf.st_mode & S_IFMT, statbuf.st_mode &~(S_IFMT));

49: printf("Владелец : %d Группа : %d"

50: " Количество ссылок : %d\n",

51: statbuf.st_uid, statbuf.st_gid, statbuf.st_nlink);

52: printf("Время создания : %s\n",

53: timeString(statbuf.st_ctime, timeBuf));

54: printf("Время модификации : %s\n",

55: timeString(statbuf.st_mtime, timeBuf));

56: printf("Время доступа : %s\n",

57: timeString (statbuf.st_atime, timeBuf));

58:

59: return 0;

60: }

61:

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

63: int i;

64: int rc = 0 ;

65:

66: /* Вызвать statFile() для каждого имени файла,

67: переданного в командной строке. */

68: for (i = 1; i < argc; i++) {

69: /* Если statFile() сбоит, rc будет содержать не ноль.*/

70: rc |= statFile(argv[i]);

71:

72: /* это печатает пробел между позициями,

73: но не за последней */

74: if ((argc - i) > 1) printf ("\n");

75: }

76:

77: return rc;

78: }

11.3.3. Простое определение прав доступа

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

#include

int access(const char *pathname, int mode);

mode— это маска, которая содержит одно или более перечисленных ниже значений.

F_OK Файл существует. Это требует прав на выполнение по всем каталогам, составляющим путь, поэтому может закончиться сбоем, даже если файл существует.
R_OK Процесс может читать файл.
W_OK Процесс может писать файл.
X_OK Процесс может исполнять файл (или искать в каталоге).

access()возвращает 0, если указанный режим доступа разрешен, в противном случае возвращает ошибку EACCESS.

11.3.4. Изменение прав доступа к файлу

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

#include

int chmod(const char *pathname, mode_t mode);

int fchmod(int fd, mode_t mode);

Хотя chmod()позволяет указать путь, помните, что права доступа к файлу определяет inode, а не имя файла. Если у файла есть множество жестких ссылок, то изменение прав доступа по одному из имен файла изменяет права доступа к нему везде, где он встречается в файловой системе. Параметр modeможет быть любой комбинацией прав доступа и модификаторов прав доступа, объединенных по логическому "И". Хотя это достаточно нормально — специфицировать по несколько этих значений за раз, общей практикой для программ является указание новых прав доступа непосредственно в восьмеричном виде. Только пользователь root и владелец файла могут изменять права доступа к файлу — все остальные, кто попытается это сделать, получат ошибку EPERM.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x