Книга: Программирование для Linux. Профессиональный подход
Листинг 7.4. (print-environment.c) Отображение переменных среды процесса
Листинг 7.4. (print-environment.c) Отображение переменных среды процесса
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
/* Вывод переменных среды (по одной в строке) процесса
с заданным идентификатором. */
void print_process_environment(pid_t pid) {
int fd;
char filename[24];
char environment[8192];
size_t length;
char* next_var;
/* Определение полного имени файла environ
для заданного процесса. */
snprintf(filename, sizeof(filename), "/proc/%d/environ",
(int)pid);
/* Чтение содержимого файла. */
fd = open(filename, O_RDONLY);
length = read(fd, environment, sizeof (environment));
close(fd);
/* Функция read() не помещает в конец текста нулевой символ,
поэтому его приходится добавлять отдельно. */
environment[length] = ' ';
/* Перебор переменных. Элементы списка отделяются друг от друга
нулевыми символами. */
next_var = environment;
while (next_var < environment + length) {
/* Вывод элементов списка. Каждый из них оканчивается нулевым
символом и потому интерпретируется как обычная строка. */
printf("%sn", next_var);
/* Переход к следующей переменной. Поскольку каждый элемент
списка заканчивается нулевым символом, функция strlen()
вычисляет длину отдельного элемента, а не всего списка. */
next_var += strlen(next_var) + 1;
}
}
int main(int argc, char* argv[]) {
pid_t pid = (pid_t)atoi(argv[1]);
print_process_environment(pid);
return 0;
}
- Функция close(2)
- 9.10. Отображение направлений на карте
- Глава 3. Оценка среды при бенчмаркинге
- Отображение статистики
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Сущность процесса миграции
- V Совершенствование процесса
- Значения переменных по умолчанию
- Использование сервера Yaffil внутри процесса
- 4. Стадии бизнес-процесса взаимодействия с клиентами
- 2.2.2.2 Состояния процесса
- Листинг 15.11. Код для загрузки файла с Web-сервера