Программа создает процессы с помощью 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)
- Форум что не так в использовании структуры (2008)
- Форум Просьба проверить учебную программу на языке Си на наличие ошибок - 2 (2014)