Майкл Джонсон - Разработка приложений в среде Linux. Второе издание

Здесь есть возможность читать онлайн «Майкл Джонсон - Разработка приложений в среде Linux. Второе издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: Вильямс, Жанр: ОС и Сети, Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Разработка приложений в среде Linux. Второе издание: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Разработка приложений в среде Linux. Второе издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.

Разработка приложений в среде Linux. Второе издание — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Разработка приложений в среде Linux. Второе издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

640: msg = "Завершено";

641: else

642: msg = strsignal(WTERMSIG(status));

643:

644: if (!job->runningProgs) {

645: printf(JOB_STATUS_FORMAT, job->jobId,

646: msg, job->text);

647: removeJob(jobList, job);

648: }

649: } else {

650: /* выполнение дочернего процесса остановлено */

651: job->stoppedProgs++;

652: job->progs[progNum].isStopped = 1;

653:

654: if (job->stoppedProgs == job->numProgs) {

655: printf(JOB_STATUS_FORMAT, job->jobId, "Остановлено",

656: job->text);

657: }

658: }

659: }

660:

661: if (childpid == -1 && errno != ECHILD)

662: perror("waitpid");

663: }

664:

665: int main(int argc, const char ** argv) {

666: char command[MAX_COMMAND_LEN + 1];

667: char * nextCommand = NULL;

668: struct jobSet jobList = { NULL, NULL };

669: struct job newJob;

670: FILE * input = stdin;

671: int i;

672: int status;

673: int inBg;

674:

675: if (argc > 2) {

676: fprintf(stderr, "неожиданный аргумент; использование: ladsh1 "

677: "<���команды>\n");

678: exit(1);

679: } else if (argc == 2) {

680: input = fopen(argv[1], "r");

681: if (!input) {

682: perror("fopen");

683: exit(1);

684: }

685: }

686:

687: /* не обращаем внимания на этот сигнал; это просто помеха,

688: не имеющая никакого значения для оболочки */

689: signal(SIGTTOU, SIG_IGN);

690:

691: while (1) {

692: if (!jobList.fg) {

693: /* на переднем плане нет ни одного задания */

694:

695: /* проверяем, не завершилось выполнение какого-либо фонового задания */

696: checkJobs(&jobList);

697:

698: if (!nextCommand) {

699: if (getCommand(input, command)) break;

700: nextCommand = command;

701: }

702:

703: if (!parseCommand(&nextCommand, &newJob, &inBg) &&

704: newJob.numProgs) {

705: runCommand(newJob, &jobList, inBg);

706: }

707: } else {

708: /* задание выполняется на переднем плане; ожидаем, пока оно завершится */

709: i = 0;

710: while (!jobList:fg->progs[i].pid ||

711: jobList.fg->progs[i].isStopped) i++;

712:

713: waitpid(jobList.fg->progs[i].pid, &status, WUNTRACED);

714:

715: if (WIFSIGNALED(status) &&

716: (WTERMSIG(status) != SIGINT)) {

717: printf("%s\n", strsignal(status));

718: }

719:

720: if (WIFEXITED(status) || WIFSIGNALED(status)) {

721: /* дочерний процесс завершил работу */

722: jobList.fg->runningProgs--;

723: jobList.fg->progs[i].pid = 0;

724:

725: if (!jobList.fg->runningProgs) {

726: /* дочерний процесс завершил работу */

727:

728: removeJob(&jobList, jobList.fg);

729: jobList.fg = NULL;

730:

731: /* переводим оболочку на передний план */

732: if (tcsetpgrp(0, getpid()))

733: perror("tcsetpgrp");

734: }

735: } else {

736: /* выполнение дочернего процесса было остановлено */

737: jobList.fg->stoppedProgs++;

738: jobList.fg->progs[i].isStopped = 1;

739:

740: if (jobList.fg->stoppedProgs ==

741: jobList.fg->runningProgs) {

742: printf("\n" JOB_STATUS_FORMAT,

743: jobList.fg->jobId,

744: "Остановлено", jobList.fg->text);

745: jobList.fg = NULL;

746: }

747: }

748:

749: if (!jobList.fg) {

750: /* переводим оболочку на передний план */

751: if (tcsetpgrp(0, getpid()))

752: perror("tcsetpgrp");

753: }

754: }

755: }

756:

757: return 0;

758: }

Глоссарий

advisory locking — рекомендательное блокирование. Блокирование, которое не применяется принудительно: все процессы, манипулирующие заблокированными файлами, должны явно проверять наличие блокировки.

anonymous mapping — анонимное отображение. Отображение памяти, которое на связано с inode в файловой системе и ограничено приватным использованием внутри процесса.

ar . Утилита архивирования, наиболее часто используемая для создания библиотек.

basic regular expression (BRE) — базовое регулярное выражение. Тип выражения для сопоставления строк, используемый утилитой grep.

big-endian — обратный порядок байтов. Многобайтное значение, сохраненное с наиболее значащим байтом в младших адресах памяти, за которым следуют остальные байты в порядке значимости.

blocked signals — блокированные сигналы. Сигналы, которые процесс не намерен принимать. Обычно сигналы блокируются на короткий период времени, пока процесс выполняет важную работу. Когда сигнал посылается процессу, блокирующему этот сигнал, последний остается отложенным до тех пор, пока он не будет разблокирован.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Разработка приложений в среде Linux. Второе издание»

Представляем Вашему вниманию похожие книги на «Разработка приложений в среде Linux. Второе издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Геше Джампа Тинлей - Лоджонг (второе издание)
Геше Джампа Тинлей
Алексей Филатов - Люди «А». Второе издание
Алексей Филатов
Отзывы о книге «Разработка приложений в среде Linux. Второе издание»

Обсуждение, отзывы о книге «Разработка приложений в среде Linux. Второе издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x