Как убедиться, что родительский блок сначала выполняется, а затем дочерний процесс после вызова системного вызова fork

#c #linux #operating-system #fork #wait

Вопрос:

 int main(){

id_t child1=fork();

if(child1 > 0){

       // want this block to execute completely before child block

}
else if(child1 == 0){

         // want this block to execute after the parent block has executed

}
else{
      perror("Process_failed" );
}
 

Написание родительского блока перед разветвлением отлично справляется с этой задачей, но я должен сделать это после развилки.
В текущей ситуации это иногда выполняет ребенок, а иногда и родитель. Я знаю, что это из-за метода планирования, переключения контактов и т. Д., Но как мне это ограничить

Комментарии:

1. Можете ли вы использовать std::thread вместо fork этого ? Общение между потоками намного проще, чем между процессами.

2. @super на самом деле выполняю задание и его требование использовать fork()

3. Тогда я бы занялся pthread_mutex и друзьями.

4. Это не по-доброму. Это было предложение. К тебе. Вы посмотрите на это.

5. о, я изучаю это