doublench21
@doublench21

Как добиться Race Condition`а в коде ?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char const *argv[])
{
	int fork_status, i = 0, fd1[2], fd2[2], buff;
	printf("Hello...Get start:\n");


	if((pipe(fd1) == -1) && (pipe(fd2) == -1)) {
		fprintf(stderr, "pipe() error!\n");
	} else {
		fork_status = fork(); // Создаём процесс

		if(fork_status == -1) { // Ошибка
			fprintf(stderr, "fork() error!\n");
			exit(-1);
		} else if(fork_status == 0) { // Дочерний процесс
			while(1) {
				printf("Second thread work...\n");
				i++;
				sleep(3);
			}

		} else { // Родительский процесс
			while(1) {
				printf("First thread work...\n");
				if(i%2 == 0) {
					printf("i = %d\n", i);
				}
				sleep(3);
			}
		}
	}

	return 0;
}

Переменная i в дочерним процесс увеличивается, а в родительском всегда равна нулю.
  • Вопрос задан
  • 2390 просмотров
Пригласить эксперта
Ответы на вопрос 1
@brutal_lobster
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы