@annozzer

Как запустить два процесса одновременно?

Задача про Producer&Consumer. Цель задачи в том, что есть два процесса и один общий буфер информации. Один процесс заполняет буфер, а другой берет оттуда информацию. Как я понял нужно использовать fork(). Если буфер пуст, то взять инфу нельзя, а если полон, то нельзя заполнять.
Я разобрался с fork(), при вызову этого метода, мы дублируем весь процесс после него. Один выполняется отцом, а другой сыном. Сейчас, когда я пишу, то всегда сначала выполняется отец, а потом сын. Как сделать что-бы они работали одновременно? Ну, или чередовались хаотично а не 1010101010 (1 - отец, 0 - сын)
  • Вопрос задан
  • 1092 просмотра
Пригласить эксперта
Ответы на вопрос 3
Lobotomist
@Lobotomist
Software Developer
Такое ощущение, что вы пытаетесь придумать свой конвейер (pipe). Возможно, я вас не так понял, но думаю, что проще всего, чтобы у вас было две программы:
1. Producer, генерит какие-то данные в stdout
2. Consumer, принимает данные из stdin
И запускаете их таким макаром:

Producer | Consumer
Ответ написан
EternalMaker
@EternalMaker
Вечный чайник!
В программе Producer после вызова fork() идёт не часть Consumer, а продолжается Producer. А форкнутый процесс сразу же вызывает exec( Consumer ) и может преспокойно завершиться.
Ответ написан
Комментировать
@Sh0ttky
если написать в командной строке windows например:
dir | find "exe"
, это будет фактически то, что вы хотите
есть процесс dir, он пишет в "буфер" stdout
есть процесс find, он пишет из "буфера" stdin
sdtout dir соединён с stdin find пайпом.

Короче, читайте, что такое pipe (лучше в юниксе)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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