Logo GBNhost.com — скидка на VPS сервера 50 процентов! Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

Бесплатная регистрация

Ваш идеальный сервер от 4$/мес. Все включено:

- Администрирование и решение проблем 24/7
- Перенос проектов без рисков и простоев.
- Круглосуточный мониторинг доступности сайтов.
- Защита от DDoS атак.

хостинг сайтов ГиперХост — хостинг сайтов который Вы искали.

Виртуальный хостинг, Аренда VPS серверов, рация доменных имен, SSL сертификаты

PTRACE(2)

НАЗВАНИЕ
ptrace - трассировка процесса

СИНТАКСИС


        int ptrace (request, pid, addr, data)

        int request, pid, addr, data;

ОПИСАНИЕ
Системный вызов ptrace предоставляет средства, используя которые родительский процесс может управлять выполнением порожденного процесса. В первую очередь этот вызов используется для реализации отладчиков с точками прерывания [см. sdb(1)]. Порожденный процесс работает обычным образом, пока он не получает сигнал [см. список в signal(2)], после чего он приостанавливается, а его родительский процесс получает информацию об этом через wait(2). Пока порожденный процесс приостановлен, родительский процесс может читать и изменять образ его памяти, вызывая ptrace. Кроме того, родительский процесс может либо уничтожить порожденный процесс, либо возобновить его выполнение, возможно удалив сигнал, вызвавший остановку.

Аргумент request определяет действия, которые должен выполнить системный вызов ptrace. Возможны следующие действия:
0 Вызов с этим значением request должен быть сделан порожденным процессом, если предполагается его трассировка родительским процессом. Этот вызов устанавливает у порожденного процесса флаг трассировки, вследствии чего порожденный процесс при получении сигнала останавливается, не отрабатывая функции, указанной аргументом системного вызова signal [см. signal(2)]. Аргументы pid, addr, и data игнорируются и возвращаемое значение не определено. Если родительский процесс не собирается трассировать порожденный процесс, результаты будут непредсказуемыми.
Вызовы с остальными значениями аргумента request могут использоваться только родительским процессом. Для всех этих вызовов аргумент pid обозначает идентификатор по рожденного процесса. Вызовы имеют смысл, только когда порожденный процесс приостановлен.
1,2 При этих значениях request родительскому процессу возвращается слово по адресу addr в адресном пространстве порожденного процесса. Оба значения request приводят к одинаковым результатам. Игнорируется аргумент data.
3 Родительскому процессу возвращается слово из структуры u типа user, находящейся в системном адресном пространстве [см. <sys/user.h>] и соответствующей порожденному процессу. Аргумент addr задает смещение слова относительно начала структуры. Аргумент data игнорируется. Вызов завершается неудачей, если указанное слово находится за преде лами этой структуры, в этом случае родительскому процессу возвращается -1, а переменной родительского процесса errno присваивается значение EIO.
4,5 При этих значениях request аргумент data записывается по адресу addr в адресном пространстве порожденного процесса. Оба значения request приводят к одинаковым результатам. При успешном завершении возвращается результат, равный записанному значению; в противном случае родительскому процессу возвращается -1, а переменной родительского процесса errno присваивается значение EIO.
6 Это значение аргумента request позволяет изменить некоторые поля в структуре u типа user, соответствующей порожденному процессу. Значение аргумента data записывается в слово, смещение которого от начала структуры u задается аргументом addr. Могут быть изменены лишь следующие компоненты:
  1. Регистры общего назначения.
  2. Признаки результата в слове состояния процессора.
Поле u_ar0 структуры u содержит адрес массива, в котором сохраняются регистры, как общего назначения, так и специальные. Чтобы вычислить смещение этого массива от начала структуры, нужно в файле /unix найти имя u, извлечь адрес структуры и затем вычесть его из значения поля u_ar0. Порядок расположения регистров в упомянутом массиве описан во включаемом файле <sys/reg.h>.
7 Вызов с этим значением request служит для возобновления работы порожденного процесса. Если аргумент data равен 0, то до возобновления работы удаляются все полученные, но не обработанные сигналы, включая тот, который вызвал приостановку порожденного процесса. Если аргумент data равен корректному номеру сигнала, то порожденный процесс возобновляет работу так, как будто он получил этот сигнал, а все остальные полученные сигналы удаляются. Аргумент addr задает адрес, с которого возобновляется выполнение порожденного процесса. Если значение addr равно 1, выполнение порожденного процесса возобновляется с места приостановки. При успешном завершении возвращается результат, равный значению аргумента data. Вызов завершается неудачей, если аргумент data не равен 0 или корректному номеру сигнала, в этом случае родительскому процессу возвращается -1, а переменной родительского процесса errno присваивается значение EIO.
8 Вызов с этим значением request приводит к уничтожению порожденного процесса с той же последовательностью действий, что и exit(2).
9 Вызов с этим значением request устанавливает бит трассировки в слове состояния процессора порожденного процесса и затем совершает действия, описанные для значения request, равного 7. Установленный бит трассировки вызывает прерывания по выполнению каждой машинной команды, что позволяет эффективно трассировать порожденный процесс по одной команде.

Чтобы предупредить возможный обман, вызов ptrace подавляет возможность переустанавливать действующий идентификатор пользователя при последующих вызовах exec(2). Если трассируемый процесс вызывает exec, то он до выполнения первой команды из нового выполняемого файла останавливается, сообщая о получении сигнала SIGTRAP.

Системный вызов ptrace завершается неудачей, если выполнено хотя бы одно из следующих условий:

[EIO]
Некорректный параметр request.
[ESRCH]
Отсутствует порожденный процесс с идентификатором, равным pid, или он не вызывал ptrace с параметром request, равным 0.

СМ. ТАКЖЕ
sdb(1), exec(2), exit(2), signal(2), wait(2).

Сверхбыстрый хостинг от 69 р./мес., VPS от 299 р./мес.

Бесплатно: администрирование + ISPmanager + DDoS защита + SSL + 7 дней тестовый период

Скидка 50% на первый месяц VPS и хостинга по промокоду CITFORUM

Новости мира IT:

Архив новостей

Последние комментарии:

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...