Вход/Регистрация
Параллельное и распределенное программирование на С++
вернуться

Хьюз Камерон

Шрифт:

pstree [-a] [-c] [-h | -Hpid] [-l] [-n] [-p] [-u] [-G] | -U] [pid | user]

pstree -V

При вызове этой утилиты можно использовать следующие опции,

– а Отобразить аргументы командной строки,

– h Выделить текущий процесс и его предков.

– H Аналогично опции – h, но выделению подлежит заданный процесс.

– n Отсортировать процессы с одинаковым предком по значению PID, а не

по имени,

– p Отобразить значения PID.

На рис. 3.10 показан результат выполнения команды pstree -h в среде Linux.

ka:~ # pstree -h

init-+-applix

|-atd

|-axmain

|-axnet

|-cron

|-gpm

|-inetd

|-9*[kdeinit]

|-kdeinit -+-kdeinit

| |-kdeinit---bash---gimp---script-fu

| '-kdeinit---bash -+-man---sh---sh---less

| '-pstree

|-kdeinit---cat

|-kdm-+-X

| '-kdm---kde---ksmserver

|-kflushd

|-khubd

|-klogd

|-knotify

|-kswapd

|-kupdate

|-login---bash

|-lpd

|-mdrecoveryd

|-5*[mingetty]

|-nscd---nscd---5*[nscd]

|-sshd

|-syslogd

|-usbmgr

'-xconsole

Ри с . 3.10. Результат выполнения команды pstree -h в среде Linux

Использование системной функции fork

Системная функция (или системный вызов) fork создает новый процесс, который представляет собой дубликат вызывающего процесса, т.е. его родителя. При успешном выполнении функция fork возвращает родительскому и сыновнему процессам два различных значения. Сыновнему возвращается число 0, а родительскому - значение PID сыновнего процесса. Родительский и сыновний процессы продолжают выполняться с инструкции, непосредственно следующей за функцией fork . В случае неудачного выполнения (оно выражается в том, что сыновний процесс не был создан) родительскому процессу возвращается число -1.

Синопсис

#include <unistd.h>

pid_t fork(void); _

Неудачный исход функции fork возможен в случае, если система не обладает ресурсами для создания еще одного процесса. Это происходит при превышении ограничения (если оно существует) на количество сыновних процессов, которое может порождать родитель, или на количество выполняющихся процессов в масштабе всей системы. В этом случае устанавливается переменная errno, которая означает наличие ошибки.

Использование семейства системных функций exec

Семейство функций exec предназначено для замены образа вызывающего процесса образом нового процесса. При вызове функции fork создается новый процесс, который является точной копией родительского процесса, а функция exec заменяет образ «скопированного» процесса образом копии. Образ нового процесса представляет собой обычный выполняемый файл, который немедленно запускается на выполнение. Этот файл можно задать с помощью имени и пути доступа к нему. Функции семейства exec могут передать новому процессу аргументы командной строки, а также установить переменные среды. Если функция выполнилась успешно, она не возвращает никакого значения, поскольку образ процесса, который содержал обращение к функции exec, уже перезаписан. В случае неудачи вызывающему процессу возвращается число -1. Все функции exec могут иметь неудачный исход при следующих условиях:

• разрешения не признаны; разрешение на поиск отвергается для каталога выполняемых файлов; разрешение на выполнение отвергается для выполняемого файла;

• файлы не существуют, выполняемый файл не существует; каталог не существует;

• файл невозможно выполнить; файл невозможно выполнить, поскольку он открыт для записи другим процессом; файл не является выполняемым;

  • Читать дальше
  • 1
  • ...
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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