Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Пакет
dbugsetjmp()longjmp()main()-#1 #include <stdio.h>2 #include "dbug.h"34 int5 main(argc, argv)6 int argc;7 char *argv[];8 {9 register int result, ix;10 extern int factorial(), atoi();1112 DBUG_ENTER("main");13 DBUG_PROCESS(argv[0]);14 DBUG_PUSH_ENV("DBUG");15 for (ix = 1; ix < argc && argv[ix][0] == '-'; ix++) {16 switch (argv[ix][1]) {17 case '#':18 DBUG_PUSH(&(argv[ix][2]));19 break;20 }21 }22 for (; ix < argc; ix++) {23 DBUG_PRINT("args", ("argv[%d] = %s", ix, argv[ix]));24 result = factorial(atoi(argv(ixj));25 printf("%dn", result);26 fflush(stdout);27 }28 DBUG_RETURN(0);29 }Эта программа иллюстрирует большинство важных моментов. Макрос
DBUG_ENTER()Макрос
DBUG_PROCESS()main()Макрос
DBUG_PUSH_ENV()DBUGdbugDBUGGAWK_DBUGgawkМакрос
DBUG_PUSH-#getopt()getopt_long()Макрос
DBUG_PRINT()printf()dbugПри печати
dbugDBUG_PRINT()DBUG_PRINT()Наконец, макрос
DBUG_RETURN()returnvoidDBUG_VOID_RETURNОставшаяся часть программы заполнена функцией
factorial()1 #include <stdio.h>2 #include "dbug.h"34 int factorial (value)5 register int value;6 {7 DBUG_ENTER("factorial");8 DBUG_PRINT("find", ("find %d factorial", value));9 if (value > 1) {10 value *= factorial(value — 1);11 }12 DBUG_PRINT("result", ("result is %d", value));13 DBUG_RETURN(value);14 }Когда программа откомпилирована и скомпонована вместе с библиотекой
dbug$ <b>factorial 1 2 3</b> /* Обычный запуск, без отладки */12
