Тут можно читать онлайн книгу Мэтью Нейл - Основы программирования в Linux - бесплатно полную версию (целиком). Жанр книги: Программирование. Вы можете прочесть полную версию (весь текст) онлайн без регистрации и смс на сайте Lib-King.Ru (Либ-Кинг) или прочитать краткое содержание, аннотацию (предисловие), описание и ознакомиться с отзывами (комментариями) о произведении.
Основы программирования в Linux - описание и краткое содержание, автор Мэтью Нейл, читать бесплатно онлайн на сайте электронной библиотеки Lib-King.Ru.
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов
Основы программирования в Linux - читать книгу онлайн бесплатно, автор Мэтью Нейл
В предыдущем примере стандартный вывод перенаправлен в файл с помощью оператора
>set -о noclobberset -Сnoclobberset +о noclobbersetДля дозаписи в конец файла используйте оператор
>>$ <b>ps >> lsoutput.txt</b>добавит вывод команды
psДля перенаправления стандартного потока ошибок перед оператором
>2>Предположим, что вы хотите применить команду
killkillkillКоманда
$ <b>kill -HUP 1234 >killout. txt 2>killer.txt</b>поместит вывод и информацию об ошибке в разные файлы.
Если вы предпочитаете собрать оба набора выводимых данных в одном файле, можно применить оператор
>&$ <b>kill -1 1234 >killerr.txt 2>&1</b>поместит свой вывод и стандартный поток ошибок в один и тот же файл. Обратите внимание на порядок следования операторов. Приведенный пример читается как "перенаправить стандартный вывод в файл killerr.txt, а затем перенаправить стандартный поток ошибок туда же, куда и стандартный вывод". Если вы нарушите порядок, перенаправление выполнится не так, как вы ожидаете.
Поскольку обнаружить результат выполнения команды
kill$ <b>kill -l 1234 >/dev/null 2>&1</b>Перенаправление ввода
Также как вывод вы можете перенаправить ввод. Например,
$ <b>more < killout.txt</b>Понятно, что это тривиальнейший пример для ОС Linux; команда
moreКаналы
Вы можете соединять процессы с помощью оператора канала (
|sortpsЕсли не применять каналы, придется использовать несколько шагов, подобных следующим:
$ <b>ps > psout.txt</b>$ <b>sort psout.txt > pssort.out</b>Соединение процессов каналом даст более элегантное решение:
$ <b>ps | sort > pssort.out</b>Поскольку вы, вероятно, захотите увидеть на экране вывод, разделенный на страницы, можно подсоединить третий процесс,
more$ <b>ps | sort | more</b>Практически нет ограничений на допустимое количество процессов. Предположим, что вы хотите видеть все имена выполняющихся процессов, за исключением командных оболочек. Можно применить следующую командную строку:
$ <b>ps -хо соmm | sort | uniq | grep -v sh | more</b>В ней берется вывод команды
psuniqgrep -v shshКак видите, это гораздо более элегантное решение, чем строка из отдельных команд, каждая со своими временными файлами. Но в этом случае имейте в виду следующее. Если строка состоит из команд, файл вывода создается или записывается сразу, как только сформирован набор команд, поэтому в строке из нескольких команд никогда не используйте дважды одно и то же имя файла. Если вы попытаетесь сделать что-то подобное:
<b>cat mydata.txt | sort | uniq > mydata.txt</b>то в результате получите пустой файл, т.к. вы перезапишете файл mydata.txt, прежде чем прочтете его.
Командная оболочка как язык программирования
Теперь, когда вы увидели некоторые базовые операции командной оболочки, самое время перейти к реальным программам оболочки. Есть два способа написания таких программ. Вы можете ввести последовательность команд и разрешить командной оболочке выполнить их в интерактивном режиме или сохранить эти команды в файле и затем запускать его как программу.
Интерактивные программы
Легкий и очень полезный во время обучения или тестирования способ проверить работу небольших фрагментов кода — просто набрать с клавиатуры в командной строке сценарий командной оболочки.
Предположим, что у вас большое количество файлов на языке С, и вы хотите проверить наличие в них строки
POSIXgrep$ <b>for file in *</b>> <b>do</b>> <b>if grep -l POSIX $file</b>> <b>then</b>