Чтение онлайн

на главную

Жанры

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

Троан Эрик В.

Шрифт:

123: printf("Запуск оболочки...\n");

124: system("exec bash -");

125:

126: /* Здесь мы могли бы использовать wait4, если бы организовывали

127: ветвление вместо вызова system */

128: с = pam_close_session(pamh, 0);

129: check_success(pamh, с);

130: }

131:

132: /*
Реальные приложения могли бы сообщать о сбое вместо

133: * выхода, что мы и делали в check_success на каждой стадии,

134: * поэтому в таких случаях с может иметь значения, отличные

135: * от PAM_SUCCESS.

136: */

137: с = pam_end(pamh, с);

138: check_success(pamh, с);

139:

140: return 0;

141: }

Приложения

Приложение A

Заголовочные файлы

В этом приложении показаны все локальные заголовочные файлы для исходного кода, рассмотренного в книге.

1: /* libhello.h */

2:

3: #ifndef LIBHELLO_H_

4: #define LIBHELLO_H_

5:

6: void print_hello(void);

7:

8: #endif /* LIBHELLO_H_ */

1: /* ptypair.h */

2:

3: #ifndef _PTYPAIR_H

4: #define _PTYPAIR_H

5: int get_master_pty(char **name);

6: int get_slave_pty(char *name);

7: #endif /* _PTYPAIR_H */

1: /* sockutil.h */

2:

3: void die(char * message);

4: void copyData(int from, int to);

5: #ifndef CMSG_DATA

6: #define CMSG_DATA (cmsg) ((cmsg)->cmsg_data)

7: #endif

Приложение Б

Исходный код

ladsh

1: /* ladsh4.c */

2:

3: #define _GNU_SOURCE

4:

5: #include <ctype.h>

6: #include <errno.h>

7: #include <fcntl.h>

8: #include <glob.h>

9: #include <signal.h>

 10: #include <stdio.h>

 11: #include <stdlib.h>

 12: #include <string.h>

 13: #include <sys/ioctl.h>

 14: #include <sys/wait.h>

 15: #include <unistd.h>

 16:

 17: #define MAX_COMMAND_LEN 250 /* максимальная длина одной

 18: командной строки */

 19: #define JOB_STATUS_FORMAT "[%d] %-22s %.40s\n"

 20:

 21: struct jobSet {

 22: struct job * head; /* заголовок списка выполняющихся заданий */

 23: struct job * fg; /* текущее высокоприоритетное задание */

 24: };

 25:

 26: enum redirectionType { REDIRECT_INPUT, REDIRECT_OVERWRITE,

 27: REDIRECT_APPEND };

 28:

 29: struct redirectionSpecifier {

 30: enum redirectionType type; /* тип переадресации */

 31: int fd; /* переадресация fd */

 32: char * filename; /* файл, в который будет переадресовано fd */

 33: };

 34:

 35: struct childProgram {

 36: pid_t pid; /* 0 в случае выхода */

 37: char ** argv; /* имя программы и аргументы */

 38: int numRedirections; /* элементы в массиве переадресации */

 39: struct redirectionSpecifier* redirections; /* переадресации ввода-вывода */

 40: glob_t globResult; /* результат универсализации параметра */

 41: int freeGlob; /* нужно ли освобождать globResult? */

 42: int isStopped; /* выполняется ли в данный момент программа?*/

 43: };

 44:

 45: struct job {

 46: int jobId; /* номер задания */

 47: int numProgs; /* количество программ в задании */

 48: int runningProgs; /* количество выполняющихся программ */

 49: char * text; /* имя задания */

 50: char * cmdBuf; /* буфер, на который ссылаются различные массивы argv */

 51: pid_t pgrp; /* идентификатор группы процесса для задания */

Поделиться:
Популярные книги

Гарем вне закона 18+

Тесленок Кирилл Геннадьевич
1. Гарем вне закона
Фантастика:
фэнтези
юмористическая фантастика
6.73
рейтинг книги
Гарем вне закона 18+

Разведчик. Заброшенный в 43-й

Корчевский Юрий Григорьевич
Героическая фантастика
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.93
рейтинг книги
Разведчик. Заброшенный в 43-й

Академия

Кондакова Анна
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Академия

Проклятый Лекарь IV

Скабер Артемий
4. Каратель
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Проклятый Лекарь IV

Третий. Том 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 3

СД. Том 17

Клеванский Кирилл Сергеевич
17. Сердце дракона
Фантастика:
боевая фантастика
6.70
рейтинг книги
СД. Том 17

Чемпион

Демиров Леонид
3. Мания крафта
Фантастика:
фэнтези
рпг
5.38
рейтинг книги
Чемпион

Краш-тест для майора

Рам Янка
3. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
эро литература
6.25
рейтинг книги
Краш-тест для майора

На границе империй. Том 7. Часть 3

INDIGO
9. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.40
рейтинг книги
На границе империй. Том 7. Часть 3

Случайная жена для лорда Дракона

Волконская Оксана
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Случайная жена для лорда Дракона

Не грози Дубровскому! Том II

Панарин Антон
2. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том II

Барон устанавливает правила

Ренгач Евгений
6. Закон сильного
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Барон устанавливает правила

Возвращение

Кораблев Родион
5. Другая сторона
Фантастика:
боевая фантастика
6.23
рейтинг книги
Возвращение

Кодекс Охотника. Книга XXV

Винокуров Юрий
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XXV