C: закрыть (2) после fork ()? - PullRequest
1 голос
/ 18 мая 2011

Быстрый вопрос, надеясь, что кто-то может проверить.После разветвления, если вы вызываете close(2) в родительском элементе, stderr в дочернем элементе не изменяется.Однако, если вы вызываете close(2) в дочернем элементе, stderr в родительском элементе закрывается.Это кажется правильным?Я проверил это во FreeBSD, и, похоже, это так, но я не уверен, почему.Я ожидаю, что либо они оба не влияют друг на друга, либо они влияют, но не это.

Есть идеи?

1 Ответ

5 голосов
/ 18 мая 2011

После разветвления каждый дескриптор открытого файла в родительском объекте дублируется, поэтому любое закрытие после разветвления не повлияет ни на родителя, ни на дочернего элемента.

Если вы не делаете это неправильно (т.е. не проверяете вывод системного вызова fork()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...