2010-11-13 2 views
0

Что действительно делают системные вызовы dup() и dup2()? Как я буду использовать их на практике?Что действительно делают системы dup() и dup2()?

+0

Какую часть вы не понимаете после прочтения страниц руководства и поиска? –

+0

Мне не удалось понять, как использовать в программировании и где использовать – user484457

+3

Вы просмотрели http://stackoverflow.com/questions/1720535/practical-examples-use-dup-or-dup2 или http: // stackoverflow. com/вопросы/3918962/unix-c-dup2-question? – Zeke

ответ

2

Оба создают новый файловый дескриптор, соответствующий существующему открытому файлу. Большинство свойств между старым и новым fd (например, позиция) разделяются; единственное свойство, о котором я могу думать, это не общий флажок close-on-exec. Разница между dup и dup2 заключается в том, что присваивает наименьший доступный номер дескриптора файла, в то время как dup2 позволяет выбрать номер дескриптора файла, который будет назначен и атомарно закрыт и заменяет его, если он уже выполнен.

+0

Также обратите внимание, что 'fcntl' с командой' F_DUPFD' ведет себя аналогично 'dup2', но не сжимает существующий fd, поэтому его можно безопасно использовать в поточных программах при попытке создать определенный номер fd, который еще не был выполнен. –

Смежные вопросы