Марк Митчелл - Программирование для Linux. Профессиональный подход

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

Программирование для Linux. Профессиональный подход: краткое содержание, описание и аннотация

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

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

Программирование для Linux. Профессиональный подход — читать онлайн бесплатно полную книгу (весь текст) целиком

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

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

Интервал:

Закладка:

Сделать

длину отдельного аргумента, а не всего списка. */

next_arg += strlen(next_arg) + 1;

}

}

int main(int argc, char* argv[]) {

pid_t pid = (pid_t)atoi(argv[1]);

print_process_arg_list(pid);

return 0;

}

Предположим, к примеру, что номер процесса системного демона syslogdравен 372.

% ps 372

PID TTY STAT TIME COMMAND

372 ? S 0:00 syslogd -m 0

% ./print-arg-list 372

syslogd

-m

0

В данном случае программа print-arg-list, сообщает о том, что демон syslogdвызван с аргументами -m 0.

7.2.3. Переменные среды процесса

Файл environсодержит список переменных среды, в которой работает процесс (см. раздел 2.1.6, "Среда выполнения"). Как и в случае файла cmdline, элементы списка разделяются нулевыми символами. Формат элемента таков: ПЕРЕМЕННАЯ = значение .

Представленная в листинге 7.4 программа является обобщением программы, которая была показана в листинге 2.3. В данном случае программа принимает в командной строке идентификатор процесса и отображает список его переменных среды, извлекаемый из файловой системы /proc.

Листинг 7.4. ( print-environment.c ) Отображение переменных среды процесса

#include

#include

#include

#include

#include

#include

/* Вывод переменных среды (по одной в строке) процесса

с заданным идентификатором. */

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] = ' \0';

/* Перебор переменных. Элементы списка отделяются друг от друга

нулевыми символами. */

next_var = environment;

while (next_var < environment + length) {

/* Вывод элементов списка. Каждый из них оканчивается нулевым

символом и потому интерпретируется как обычная строка. */

printf("%s\n", 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;

}

7.2.4. Исполняемый файл процесса

Файл exeуказывает на исполняемый файл процесса. В разделе 2.1.1, "Список аргументов", говорилось о том, что имя исполняемого файла обычно передается в качестве первого элемента списка аргументов. Но это лишь распространенное соглашение. Программу можно запустить с произвольным списком аргументов. Файл exeфайловой системы /proc— это более надежный способ узнать, какой исполняемый файл запущен процессом.

Во многих программах путь ко вспомогательным файлам задан относительно исполняемого файла, поэтому важно знать, где именно он находится. Функция get_executable_path()в листинге 7.5 определяет путевое имя текущего исполняемого файла, проверяя символическую ссылку /proc/self/exe.

Листинг 7.5. ( get-exe-path.c ) Определение путевого имени текущего исполняемого файла

#include

#include

#include

#include

/* Нахождение путевого имени текущего исполняемого файла.

путевое имя помещается в строку BUFFER, длина которой

равна LEN. Возвращается число символов в имени либо

-1 в случае ошибки. */

size_t get_executable_path(char* buffer, size_t len) {

char* path_end;

/* чтение содержимого символической ссылки /proc/self/exe. */

if (readlink("/proc/self/exe", buffer, len) <= 0)

return -1;

/* Нахождение последней косой черты, отделяющей путевое имя. */

path_end = strrchr(buffer, '/');

if (path_end == NULL)

return -1;

/* Переход к символу, стоящему за последней косой чертой. */

++path_end;

/* Усечение полной строки до путевого имени. */

*path_end = '\0';

/* Длина путевого имени — это число символов до последней

косой черты. */

return (size_t)(path_end - buffer);

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

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование для Linux. Профессиональный подход»

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


Отзывы о книге «Программирование для Linux. Профессиональный подход»

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

x