Что происходит, когда вы вызываете close () для дескриптора файла канала, который был дублирован dup2 ()? - PullRequest
0 голосов
/ 19 октября 2018

У меня есть вопрос относительно файловых дескрипторов в Unix и C программировании.

Допустим, я использую pipe(fd) для получения файловых дескрипторов 3 и 4 для концов канала, 3 подключается к концу чтения и 4 к концу записи.

Теперь я использую dup2(fd[write_end],1)скопировать дескриптор конца записи (которого было 4) в файловый дескриптор 1 в моем процессе.Если я сейчас сделаю close(fd[write_end]), закроет ли он дескриптор 1 или дескриптор 4?

1 Ответ

0 голосов
/ 19 октября 2018

После успешного вызова dup2 оба дескриптора файла действительны.

Когда вы затем вызываете close(fd[write_end]), поскольку для fd[write_end] установлено значение 4, это то же самое, что и close(4).Таким образом, дескриптор файла 1 остается открытым и пригодным для использования.

...