Ваш канал является однонаправленным потоком - с файловым дескриптором для каждого конца. Нет необходимости закрывать () любой конец канала, чтобы позволить данным проходить по нему.
если ваш канал охватывает процессы (т. Е. Создается перед fork (), а затем родитель и потомок используют его для связи), вы можете иметь одну запись и одну конец чтения. Тогда рекомендуется закрыть нежелательные концы трубы. Это будет
- убедитесь, что когда конец записи закрывает канал, он виден концом чтения. В качестве примера, скажем, что ребенок - сторона записи, и она умирает. Если родительская сторона записи не была закрыта, то родительский элемент не получит «eof» (чтение нулевой длины ()) из канала - потому что канал имеет открытый конец записи.
- дает понять, какой процесс выполняет запись, а какой - чтение в канале.
если ваша труба охватывает нити (в рамках того же процесса), то не закрывайте нежелательные концы трубы. Это связано с тем, что дескриптор файла удерживается процессом, и закрытие его для одного потока приведет к его закрытию для всех потоков, и, следовательно, канал станет непригодным для использования.
Ничто не мешает вам непрерывно записывать один процесс в канал, а другой - читать процесс. Если у вас возникла проблема, сообщите нам более подробную информацию.