У меня есть базовый канал в c, я отправил целое число в дочерний процесс, дочерний процесс увеличит это число на 1 и отправит обратно в родительский процесс.Мой вопрос: что происходит, если я закрываю дескриптор файла записи сразу после функции записи?Программа отобразит 1
(правильный вывод 2
)
int main(){
int p[2];
pipe(p);
int n=1;
write(p[1], &n, sizeof(int));
close(p[1]); // don't work => the output is 1
if(fork() == 0) {
read(p[0], &n, sizeof(int));
n = n + 1;
write(p[1], &n, sizeof(int));
close(p[1]);
close(p[0]);
exit(0);
}
wait(0);
read(p[0], &n, sizeof(int));
close(p[0]);
//close(p[1]); works => the output is 2
printf("%d\n", n);
return 1;
}