Читаем Разработка приложений в среде Linux. Второе издание полностью

426:  /* здесь производится обработка встраиваемых модулей — мы не используем fork(),

427:     поэтому, чтобы поместить процесс в фон, придется потрудиться */

428:  if (!strcmp(newJob.progs[0].argv[0], "exit")) {

429:   /* здесь возвращается реальный код выхода */

430:   exit(0);

431:  } else if (!strcmp(newJob.progs[0].argv[0], "pwd")) {

432:   len = 50;

433:   buf = malloc(len);

434:   while (!getcwd(buf, len) && errno == ERANGE) {

435:    len += 50;

436:    buf = realloc(buf, len);

437:   }

438:   printf("%s\n", buf);

439:   free(buf);

440:   return 0;

441:  } else if (!strcmp(newJob.progs[0].argv[0], "cd")) {

442:   if (!newJob.progs[0].argv[1] == 1)

443:    newdir == getenv("HOME");

444:   else

445:    newdir = newJob.progs[0].argv[1];

446:   if (chdir(newdir))

447:    printf("сбой при смене текущего каталога: %s\n",

448:     strerror(errno));

449:   return 0;

450:  } else if (!strcmp(newJob.progs[0].argv[0], "jobs")) {

451:   for (job = jobList->head; job; job = job->next) {

452:    if (job->runningProgs == job->stoppedProgs)

453:     statusString = "Остановлено";

454:    else

455:     statusString = "Выполняется";

456:

457:    printf(JOB_STATUS_FORMAT, job->jobId, statusString,

458:     job->text);

459:   }

460:   return 0;

461:  } else if (!strcmp(newJob.progs[0].argv[0], "fg") ||

462:   !strcmp(newJob.progs[0].argv[0], "bg")) {

463:   if (!newJob.progs[0].argv[1] || newJob.progs[0].argv[2]) {

464:    fprintf(stderr,

465:     "%s: ожидался в точности один аргумент\n",

466:     newJob.progs[0].argv[0]);

467:    return 1;

468:   }

469:

470:   if (sscanf(newJob.progs[0].argv[1], "%%%d", &jobNum) != 1) {

471:    fprintf(stderr, "%s: неверный аргумент '%s'\n",

472:     newJob.progs[0].argv[0],

473:     newJob.progs[0].argv[1]);

474:    return 1;

475:   }

476:

477:   for (job = jobList->head; job; job = job->next)

478:    if (job->jobId == jobNum) break;

479:

480:   if (!job) {

481:    fprintf(stderr, "%s: неизвестное задание %d\n",

482:     newJob.progs[0].argv[0], jobNum);

483:    return 1;

484:   }

485:

486:   if (*new Job. progs[0].argv[0] == 'f') {

487:    /* Переводим задание на передний план */

488:

489:    if (tcsetpgrp(0, job->pgrp))

490:     perror("tcsetpgrp");

491:    jobList->fg = job;

492:   }

493:

494:   /* Повторяем запуск процессов в задании */

495:   for (i = 0; inumProgs; i++)

496:    job->progs[i].isStopped = 0;

497:

498:   kill(-job->pgrp, SIGCONT);

499:

500:   job->stoppedProgs = 0;

501:

502:   return 0;

503:  }

504:

505:  nextin = 0, nextout = 1;

506:  for (i = 0; i < newJob.numProgs; i++) {

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных