Почему мой раздвоенный процесс иногда перезаписывает данные в файле?Linux

Ответить
Anonymous
 Почему мой раздвоенный процесс иногда перезаписывает данные в файле?

Сообщение Anonymous »

У меня есть следующий код C, который записывается в файл как из родительского, так и от дочернего процесса после fork () . Тем не менее, выход в testfile.txt иногда поврежден или в неожиданном порядке.
Я прикрепляю код:

Код: Выделить всё

#include 
#include 
#include 
#include 

int main() {
int fd = open("testfile.txt", O_WRONLY | O_CREAT, 0644);
if (fd == -1) {
perror("open");
return 1;
}

if (fork() == 0) {
// Child process
write(fd, "Child\n", 6);
close(fd);
} else {
// Parent process
write(fd, "Parent\n", 7);
close(fd);
}

return 0;
}
проблема :
  • Файл иногда содержит "child \ nparent \ n" и в других случаях "Родитель \ nchild \ n"
  • В некоторых случаях вывод рассыпается или смешан

  • . кажется, мешают друг другу
Вопрос:

Почему это происходит?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-a-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»