Мобильное программирование приложений реального времени в стандарте POSIX




Пример 5.7 - часть 2


/* вывод реализуем в порожденном процессе*/

if (execl ("./g_r_shm", "g_r_shm", (

char *) NULL) < 0) {

perror ("EXECL");

return (5);

}

}

/* Чтение строк со стандартного ввода в объект */

/* возложим на родительский процесс. */

/* В начальный момент объект в разделяемой памяти */

/* доступен для записи*/

while (fgets (addr_shm, LINE_MAX, stdin) != NULL) {

/* Сообщим порожденному процессу, */

/* что в объект в разделяемой памяти */

/* помещена очередная строка */

assert (kill (cpid, SIG_SHM) == 0);

/* Дождемся, когда в объект можно будет прочитать*/

/* следующую строку */

if (sigtimedwait (&smask,

&sinfo, &stmspc) != SIG_SHM) {

break;

}

}

/* Порожденный процесс должен завершиться*/

/* по контролю времени ожидания*/

(void) wait (NULL);

if (shm_unlink (O_SHM_NAME) != 0) {

perror ("SHM_UNLINK");

return (6);

}

return (0);

}




Содержание  Назад  Вперед