Я использую безымянный канал для межпроцессного взаимодействия между родительским процессом и дочерним процессом, созданным с помощью 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] );
}
Безопасно ли предположить, что после того, как эта функция завершается как у потомка, так и у родителя, канал был освобожден / освобожден / уничтожен / и т.д.?
Есть ли какие-либо документы, в которых говорится об этом окончательно?
Спасибо