Администрирование локальных сетей
Рефераты >> Программирование и компьютеры >> Администрирование локальных сетей

">>" is equivalent to ">" for the next four commands.

> Show status of current recording file.

>@ Show status of current record-all file.

>(t | f | c) Turn recording on (t), or off (f), or close the recording file (c).

>@(t | f | c) Turn record-all on (t), or off (f), or close the record-all file (c).

Misc:

ss file Save (breakpoint, macro, assertion) state.

tc Toggle case sensitivity in searches.

<carriage-return> Repeat previous command.

~ Repeat previous command.

! [command-line] Execute shell (with or without commands).

q Quit debugger.

$addr Unary operator, address of object.

$sizeof Unary operator, size of object.

$in Unary boolean operator, execution in procedure.

# [text] A comment.

I Print debugger status.

M [(t | c) [expr [; expr .]]] Print or set (text or core) maps.

tM Toggle between default and modifiable core maps.

VARIABLES

var Search current procedure and globals.

class::var Search class for variable.

[[class]::]proc:[class::]var Search procedure for variable.

[[class]::]proc:depth:[class::]var Search procedure at depth on stack.

:var or ::var Search for global variable only.

. Shorthand for last thing you looked at.

$var Define or use special variable.

$result Return value of last cmd line procedure call.

$signal Current child process signal number.

$lang Current language for expression evaluation.

$depth Default stack depth for local variables.

$print Display mode for character data.

$line Current source line number.

$malloc Debugger memory allocation (bytes).

$step Instr. count in non-debug before free-run.

$cplusplus C++ feature control flags.

$regname Hardware registers.

$fpa Treat fpa sequence as one instruction.(S300 only)

$fpa_reg Address register for fpa sequences. (S300 only)

LOCATIONS

line source line & code address (if any)

#label "

file[:line] "

[file:]proc[:proc[ .]][:line|#label] "

[class]::proc[:line|#label] "

proc#line code address (if any)

[class]::proc#line "

name@shared_lib Address of name in shared library

FORMATS

A format has the form [count]formchar[size]. formchar's are:

a String at address.

(b | B) Byte in decimal (either way).

(c | C) (Wide) character.

(d | D) (Long) decimal.

(e | E) E floating point notation (as double).

(f | F) F floating point notation (as double).

(g | G) G floating point notation (as double).

i Machine instruction (disassembly).

(k | K) Formatted structure display (with base classes).

n "Normal" format, based on type.

(o | O) (Long) octal.

p Print name of procedure containing address.

(r | R) Print template of object (with base classes).

s String from pointer.

S Formatted structure display.

(t | T) Print type of object (with base classes).

(u | U) (Long) unsigned decimal.

(w | W) Wide character string (at address).

(x | X) (Long) hexadecimal.

(z | Z) (Long) binary.

Size can be a number or one of the following:

b 1 byte (char)

s 2 bytes (short)

l 4 bytes (long)

D 8 bytes (double - floating point formats only)

L 16 bytes (long double - floating point only)

6. Системные вызовы и взаимодействие с UNIX.

В этой главе речь пойдет о процессах. Скомпилированная программа хранится на диске как обычный нетекстовый файл. Когда она будет загружена в память компьютера и начнет выполняться - она станет процессом.

UNIX - многозадачная система (мультипрограммная). Это означает, что одновременно может быть запущено много процессов. Процессор выполняет их в режиме разделения времени - выделяя по очереди квант времени одному процессу, затем другому, третьему . В результате создается впечатление параллельного выполнения всех процессов (на многопроцессорных машинах параллельность истинная). Процессам, ожидающим некоторого события, время процессора не выделяется. Более того, "спящий" процесс может быть временно откачан (т.е. скопирован из памяти машины) на диск, чтобы освободить память для других процессов. Когда "спящий" процесс дождется события, он будет "разбужен" системой, переведен в ранг "готовых к выполнению" и, если был откачан будет возвращен с диска в память (но, может быть, на другое место в памяти!). Эта процедура носит название "своппинг" (swapping).

Можно запустить несколько процессов, выполняющих программу из одного и того же файла; при этом все они будут (если только специально не было предусмотрено иначе) независимыми друг от друга. Так, у каждого пользователя, работающего в системе, имеется свой собственный процесс-интерпретатор команд (своя копия), выполняющий программу из файла /bin/csh (или /bin/sh).

Процесс представляет собой изолированный "мир", общающийся с другими "мирами" во Вселенной при помощи:

a) Аргументов функции main:

void main(int argc, char *argv[], char *envp[]);

Если мы наберем команду

$ a.out a1 a2 a3

то функция main программы из файла a.out вызовется с

argc = 4 /* количество аргументов */

argv[0] = "a.out" argv[1] = "a1"

argv[2] = "a2" argv[3] = "a3"

argv[4] = NULL

По соглашению argv[0] содержит имя выполняемого файла из которого загружена эта программа*.

b) Так называемого "окружения" (или "среды") char *envp[], продублированного также в предопределенной переменной

extern char **environ;

Окружение состоит из строк вида

"ИМЯПЕРЕМЕННОЙ=значение"

Массив этих строк завершается NULL (как и argv). Для получения значения переменной с именем ИМЯ существует стандартная функция

char *getenv( char *ИМЯ );

Она выдает либо значение, либо NULL если переменной с таким именем нет.

c) Открытых файлов. По умолчанию (неявно) всегда открыты 3 канала:

ВВОД В Ы В О Д

FILE * stdin stdout stderr

соответствует fd 0 1 2

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

#include <stdio.h>

main(ac, av) char **av; {

execl("/bin/sleep", "Take it easy", "1000", NULL);

}

Эти каналы достаются процессу "в наследство" от запускающего процесса и связаны с дисплеем и клавиатурой, если только не были перенаправлены. Кроме того, программа может сама явно открывать файлы (при помощи open, creat, pipe, fopen). Всего программа может одновременно открыть до определенное количество файлов в зависииости от настройки ядра.

d) Процесс имеет уникальный номер, который он может узнать вызовом


Страница: