Данные из стандартного вывода добавляются
Таблица 2. Перенаправление потоков ввода/вывода
Обозначение |
Выполняемая операция |
>файл |
Стандартный вывод перенаправляется в файл |
>>файл |
Данные из стандартного вывода добавляются в файл |
<файл |
Стандартный ввод перенаправляется в файл |
p1|p2 |
Вывод программы p1 направляется на вход программы p2 |
n>файл |
Перенаправление вывода из файла с идентификатором n в файл |
n>>файл |
Тоже, что и в предыдущей строке, но данные добавляются к содержимому файла |
n>&m |
Объединение потоков с идентификаторами n и m |
<<str |
“Ввод здесь” – используется стандартный ввод до подстроки str. При этом осуществляется подстановка метасимволов интерпретатора |
<<\str |
То же, что и в предшествующей строке, но без подстановки. |
Символ | иногда называется конвейером. Например, команда:
ps – ef | grep proс
осуществляет вывод данных о конкретном процессе proс. Несколько более корректна команда:
ps – ef | grep proс grep –v grep
так как в потоке, формируемом командой ps, присутствуют две строки, содержащие proс - строка процесса proс и строка процесса grep с параметром proс.
Для запуска выполнения команды в фоновом режиме достаточно завершить ее символов &.
Виртуальная память процесса состоит из сегментов памяти. Размер, содержимое и размещение сегментов определяется самой программой (например, применением библиотек). Исполняемые файлы могут иметь формат COFF (Common Object File Format) и ELF (Executable and Linking Format).
Функция main() является первой, определенной пользователем. Именное ей будет передано управление после формирования соответствующего окружения запускаемой программы. Функция main определяется следующим образом.
main(int argc, char *argv[], char *envp[]);
Аргумент argc определяет число параметров, переданных программе. Указатели на эти параметры передаются с помощью массива argv[], так через argv[0] передается имя программы, argv[1] – несет в себе первый параметр и т.д. до argv[argc-1]. Массив envp[] несет в себе список указателей на переменные окружения, передаваемые программе. Переменные представляют собой строки имя=значение_переменной.
В среде UNIX существует два базовых интерфейса для файлового ввода/вывода.
- Интерфейс системных вызовов, непосредственно взаимодействующих с ядром ОС.
- Стандартная библиотека ввода-вывода.
С файлом ассоциируется дескриптор, который в свою очередь связан с файловым указателем смещения, начиная с которого будет произведена последующая операция чтения/записи. Каждая операция чтения или записи увеличивает этот указатель на число переданных байтов. При открытии файла указатель принимает значение нуль.
Содержание раздела