Следующий код:
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#define FILE "out.txt"
int main() {
// Creates an empty file
close(open(FILE, O_WRONLY|O_TRUNC|O_CREAT, 0600));
fork();
close(1);
open(FILE, O_WRONLY);
execlp("date", "date", NULL);
}
Создает файл с именем out.txt со следующим содержанием:
Tue 4 Dec 21:21:54 GMT 2018
Я не понимаю, почему есть только одна строка сДата и время.
Я ожидал бы, что каждый из двух дочерних процессов должен закрыть свои соответствующие стандартные дескрипторы выходных файлов и теперь, когда они свободны, переназначить их в out.txt.Поэтому я ожидаю увидеть две строки в файле, по одной от каждого дочернего процесса.Почему этого не происходит?
Заранее спасибо за помощь.