Программа создает процессы с помощью fork , которые получают доступ к стандартному выводу ошибок . Порядок вывода произвольный . Можно ли его упорядочить по возрастанию , не используя блокировку ? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/wait.h> #define BUFSIZE 1024 int main(int argc, char *argv[]) { char buffer[BUFSIZE]; char *c; pid_t childpid = 0; int delay; volatile int dummy = 0; int i, n; if (argc != 3){ /* check for valid number of command-line arguments */ fprintf (stderr, "Usage: %s processes delay\n", argv[0]); return 1; } n = atoi(argv[1]); delay = atoi(argv[2]); for (i = 1; i < n; i++) if (childpid = fork()) break; snprintf(buffer, BUFSIZE, "i:%d process ID:%ld parent ID:%ld child ID:%ld\n", i, (long)getpid(), (long)getppid(), (long)childpid); c = buffer; /********************** start of critical section **********************/ while (*c != '\0') { fputc(*c, stderr); c++; for (i = 0; i < delay; i++) dummy++; } /********************** end of critical section ************************/ if (wait(NULL) == -1) return 1; return 0; }
Ответ на:
комментарий
от gods-little-toy
Ответ на:
комментарий
от kto_tama
Ответ на:
комментарий
от help_us
Ответ на:
комментарий
от mky
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Работа с функциями семейства exec (2017)
- Форум fork(), exec(), wait() (2020)
- Форум fork() (2020)
- Форум [fork()+getpid()] Мааа...ленький вопросик (2008)
- Форум C++/exceptions - деление на ноль не ловиццо, почему? (2006)
- Форум (Shell скрипты и C) Вывод результата в --dialog msgbox (2012)
- Форум fork() и прерванный sleep() (2007)
- Форум День программиста (2017)
- Форум Просьба проверить учебную программу на языке Си на наличие ошибок - 2 (2014)
- Форум что не так в использовании структуры (2008)