Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
6$ <b>factorial -#t 1 2 3</b>/* Вывести трассировку вызовов функций, обратите внимание на вложенность */| >factorial| <factorial1 /* Обычный вывод в stdout */| >factorial| | >factorial| | <factorial /* Вывод отладки в stderr */| <factorial2| >factorial| | >factorial| | | >factorial| | | <factorial| | <factorial| <factorial6<?func?$ <b>factorial -#d 1 2</b>/* Показать отладочные сообщения DBUG_PRINT() */?func?: args: argv[2] = 1factorial: find: find 1 factorialfactorial: result: result is 11?func?: args: argv[3] = 2factorial: find: find 2 factorialfactorial: find: find 1 factorialfactorial: result: result is 1factorial: result: result is 22Опция
-#dbugDBUG_PUSH()-#DBUG_PUSH()getopt()optargУправляющая строка состоит из набора опций и аргументов. Каждая группа опций и аргументов отделяется от других символом двоеточия. Каждая опция представлена одной буквой, а аргументы этой опции отделяются от нее запятыми. Например:
$ myprog -#d,mem,ipc:f,check_salary,check_start_date -f infile -o outfileОпция
dDBUG_PRINT()memipcDBUG_PRINT()fcheck_salary()check_start_date()Следующий список опций и аргументов воспроизведен из руководства библиотеки
dbugd [,ключевые слова]Разрешает вывод от макросов с указанными ключевыми словами. Пустой список ключевых слов предполагает, что выбраны все ключевые слова.
FПомечает каждую строку вывода отладки именем исходного файла, содержащего макрос, осуществляющий вывод.
iИдентифицирует процесс, выводящий каждую отладочную или трассировочную строку номером ID для этого процесса.
LПомечает каждую строку вывода отладчика номером строки исходного файла, в котором находится осуществляющий вывод макрос.
о[,файл]Перенаправляет поток вывода отладчика в указанный файл. Потоком вывода по умолчанию является
stderrstdoutt[,N]Включает трассировку потока управления функций. Максимальная глубина вложения определяется
NДля завершения нашего обсуждения вот остальные макросы, определенные библиотекой
dbugDBUG_EXECUTE(строка, код)Этот макрос похож на
DBUG_PRINT()dDBUG_EXECUTE("abort", abort());DBUG_FILEЭто значение типа
FILE*<stdio.h>DBUG_LONGJMP(jmp_buf env, int val)Этот макрос заключает в оболочку вызов
longjmp()dbugDBUG_POP()Этот макрос выталкивает из стека один уровень сохраненного состояния отладки, созданный макросом
DBUG_PUSH()DBUG_SETJMP(jmp_buf env)Этот макрос заключает в оболочку вызов
setjmp()dbugВ другом воплощении, в первой начинающей компании, для которой мы работали [177], мы использовали в своем продукте библиотеку
dbug-DDBUGЧтобы извлечь максимальную выгоду от библиотеки
dbugawk
