Я использую безымянный канал для межпроцессного взаимодействия между родительским процессом и дочерним процессом, созданным с помощью fork (). Я использую функцию pipe (), включенную в unistd.h
. Я предполагаю, что после закрытия обоих файловых дескрипторов (и в обоих процессах) канал будет освобожден / освобожден / уничтожен / и т. Д. Но я не нашел ничего на страницах руководства, что бы об этом говорилось окончательно. Я делаю программу, которая будет работать очень долго, поэтому я хочу предотвратить утечки памяти и другие подобные вещи.
Тело моей функции выглядит примерно так:
int pipefds[2];
pipe( pipefds );
if ( fork() == 0 ) {
close( pipefds[1] );
...
//Use pipefds[0]
close( pipefds[0] );
} else {
close( pipefds[0] );
...
//Use pipefds[1]
close( pipefds[1] );
}
Можно ли предположить, что после этой функции завершается как в дочернем, так и в родительском, что канал был освобожден / освобожден / уничтожен / и т. д. ?
Есть ли какая-либо документация, в которой это окончательно сказано?
Спасибо