Тема: параллельные процессы

Задание: Нужно создать два параллельных процесса. каждый осуществляется работу с одним и тем же файлом. Каждый процесс открывает файл. Один процесс пишет в файл, другой - читает из него. Что произойдет без включения блокировок?
Не очень получилось как-то, подскажите ,пожалуйста, как правильно...

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
 
int main(void) {
 
        char filename[1000];
        int fd_in, fd_out;
        char buf[1024];
printf("enter file:");
gets(filename);
        memset(buf, 0, 1024);
        fd_in = open(filename, O_RDONLY);
        fd_out = open(filename, O_WRONLY|O_CREAT);
        fork();
                sprintf(buf, " Hello, world!\n\r");
                write(fd_out, buf, strlen(buf));
                sleep(1);
                memset(buf, 0, 1024);
        while (read(fd_in, buf, 20) > 0) { 
                printf("%s", buf);
 
        }
        sleep(10);
}

Thumbs up Thumbs down

2

Re: параллельные процессы

Читаем теорию про семафоры http://perldoc.perl.org/Thread/Semaphore.html .