Итак, я пытаюсь работать с параллелизмом с несколькими процессами (fork).
Сначала я запустил код в своей локальной папке, и код работает нормально.Однако, когда я попытался установить файл в папку tmp в UNIX, мой код не блокируется семафором.Мне кажется, что при открытии файла из папки tmp каждый процесс выполняет всю работу вместо разделения работы, или в некоторых редких случаях один процесс выполняет всю работу, а два других процесса так или иначе никогда не получают доступ к блокировке.
Сводит меня с ума, если он работает для локального файла, то нет никаких причин, по которым он не работает в папке tmp.
Основная цель - у меня есть набор дочерних процессов из fork()
, только 1 процесс получает контроль над CS, которая является открытым файлом, считыванием значения из файла, сохранением значения, закрытием файла, изменением значения, открытием файла, записью файла значений, закрытием файла и тем самым завершением CS.Я использую POSIX semaphore
.
Есть ли причина, по которой у tmp / file.txt могут возникнуть проблемы с sem_wait()/sem_post()
.Любой указатель был бы полезен.
Единственное различие между двумя кодами:
fd = open("Seq.txt", O_RDONLY);
против
fd = open("tmp/Seq.txt", O_RDONLY);
Нужно ли публиковать фрагмент кода большего размера?