Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет2.docx
Скачиваний:
5
Добавлен:
21.11.2018
Размер:
53 Кб
Скачать
☆

2.2. Невидимые символы

Создаем файл prog.c с текстом программы:

#include <stdio.h>

main ()

{

printf ("Hello, everybody ! ");

}

Применив команду ls , определяем владельца и группу файла, права доступа, размер файла, время последнего изменения:

group13@SPOcomp5:~/Boytsev/Lab2$ ls -l

total 12

-rw-r--r-- 1 group13 group13 68 2011-09-26 11:47 prog.c

-rw-r--r-- 1 group13 group13 1281 2011-10-10 11:06 report.txt

drwxr-xr-x 2 group13 group13 4096 2011-10-10 11:01 tem

Владелец и группа - group13

Права доступа:

владелец - запись и чтение;

группа - чтение;

остальные - чтение.

Размер файла = 68 байт

Время последнего изменения: 2011-09-26 11:47

С помощью команды od (octal dump - восьмеричный дамп) выведим побайтную распечатку prog.c:

group13@SPOcomp5:~/Boytsev/Lab2$ od prog.c

0000000 021440 067151 066143 062165 020145 071474 062164 067551

0000020 064056 005076 060555 067151 024040 005051 005173 071160

0000040 067151 063164 024040 044042 066145 067554 020054 073145

0000060 071145 061171 062157 020171 020041 067134 024442 005073

0000100 020175 005012

0000104

od -c выводит ASCII-символы.

group13@SPOcomp5:~/Boytsev/Lab2$ od -c prog.c

0000000 # i n c l u d e < s t d i o

0000020 . h > \n m a i n ( ) \n { \n p r

0000040 i n t f ( " H e l l o , e v

0000060 e r y b o d y ! \ n " ) ; \n

0000100 } \n \n

0000104

od -b выводит побайтно коды символов в 8-миричной системе.

group13@SPOcomp5:~/Boytsev/Lab2$ od -b prog.c

0000000 040 043 151 156 143 154 165 144 145 040 074 163 164 144 151 157

0000020 056 150 076 012 155 141 151 156 040 050 051 012 173 012 160 162

0000040 151 156 164 146 040 050 042 110 145 154 154 157 054 040 145 166

0000060 145 162 171 142 157 144 171 040 041 040 134 156 042 051 073 012

0000100 175 040 012 012

0000104

od -сb

group13@SPOcomp5:~/Boytsev/Lab2$ od -cb prog.c

0000000 # i n c l u d e < s t d i o

040 043 151 156 143 154 165 144 145 040 074 163 164 144 151 157

0000020 . h > \n m a i n ( ) \n { \n p r

056 150 076 012 155 141 151 156 040 050 051 012 173 012 160 162

0000040 i n t f ( " H e l l o , e v

151 156 164 146 040 050 042 110 145 154 154 157 054 040 145 166

0000060 e r y b o d y ! \ n " ) ; \n

145 162 171 142 157 144 171 040 041 040 134 156 042 051 073 012

0000100 } \n \n

175 040 012 012

0000104

Перевод строки - \n (код 012)

Пробел - код 040

Табуляция - \t (код 011)

2.3. Ввод-вывод для файлов-терминалов

С помощью tty определяем полное имя нашего файла-терминала:

group13@SPOcomp5:~/Boytsev/Lab2$ tty

/dev/pts/0

Выведим информацию посредством echo, переназначив вывод на этот терминал:

group13@SPOcomp5:~/Boytsev/Lab2$ echo rrr >> /dev/pts/0

rrr

Переназначим вывод на другой терминал:

group13@SPOcomp5:~/Boytsev/Lab2$ echo rr >> /dev/pts/1

На консоли терминала pts/1 появляется group13@SPOcomp5:~$ rr

Файл-терминал — находится в каталоге /dev и воспринимается системой как файл-устройство. В результате, при выводе непосредственно в файл-терминал информация отображается в консоле.

Запустим cat без аргументов, переназначив ее вывод на файл prog.c и введем строчку:

group13@SPOcomp5:~/Boytsev/Lab2$ cat >> prog.c

eee

После ввода команды терминал перешел в режим ожидания ввода символов. По нажатию Ctrl+D, ввод символов завершается, и данные записываются в файл. С помощью od убеждаемся, что в конец файла prog.c записывается введеная строчка (и символ перевода строки \n):

group13@SPOcomp5:~/Boytsev/Lab2$ od -cb prog.c

0000000 # i n c l u d e < s t d i o .

0000020 h > \n m a i n ( ) \n { \n p r i

0000040 n t f ( " H e l l o , e v e

0000060 r y b o d y ! " ) ; \n } \n

0000100 \n \n e e e \n

0000106

Запустим cat, наберем несколько символов без перевода строки:

group13@SPOcomp5:~/Boytsev/Lab2$ cat >> prog.c

huhbujb

Приглашения в shell появляется только после второго нажатия Ctrl+D. Это объясняется тем, что операционная система ищет в конце ввода символ перевода строки (\n) или конца потока ввода (символ Ctrl+D конец потока ввода). Если она его находит то по нажатию Ctrl+D завершается ввод, если не находит, то Ctrl+D воспринимается как конец потока ввода.

В файл записалась введенная строчка без символа перевода строки \n:

group13@SPOcomp5:~/Boytsev/Lab2$ od -cb prog.c

0000000 # i n c l u d e < s t d i o .

0000020 h > \n m a i n ( ) \n { \n p r i

0000040 n t f ( " H e l l o , e v e

0000060 r y b o d y ! " ) ; \n } \n

0000100 \n e e e \n R E R

0000110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]