Нет.
Чтобы интерактивная оболочка без входа -исходила из файла при выходе, установите ловушку в.bashrc
:
shopt -q login_shell || trap '. "$HOME/.bash_non-login_logout"' EXIT
Возможно, вы недостаточно различаете:
файловые дескрипторы(fd )и
втулки .
Вы упомянули «networkfds». Я предполагаю, что они пограничны, как файл NFS может быть особенным в определенных ситуациях. Это не файл, а файл NFS.
Это важно, потому что, на самом деле, опрос fd — это то, что сокету не нужно из-за протокола TCP с отслеживанием состояния. (Если бы я был более в этом уверен, я бы сделал это смело.)
Необработанная пара сокетов UDP будет аналогична паре fd :соединение готово, но как организовать поток данных? Объясняет вездесущность «интернет-протокола» TCP (При том, что IP — это всего лишь уровень ниже, более статичный, но также важный. Смотрите википедию! ).
Значит, твой дизайн тупой? По определению да, немного сыровато. По сравнению с TCP/IP. Файловые дескрипторы — это отдельные контакты для потоков ввода-вывода, а сокеты — это роскошные разъемы эпохи интернета. Есть connect
и т.п. только для сокетов.
Вам это понятно? Я наполовину мог следовать вашему вопросу, надеюсь, я не слишком далеко. Пожалуйста скажи.
Вопрос: «Кому вы хотите написать?»
Допустим, у вас есть два клиентских сокета, тогда это просто, прочитать (или recv ())на сокет _fd1 и записать (или отправить ())на сокет _fd2. Это так просто.
В C ничто не требует, чтобы вы «ответили» клиенту
Необходимость ответа клиенту (или другому )связана с протоколом/приложением, которое вы хотите внедрить.
При открытии большего количества сокетов возникает единственный вопрос: «Куда уходят данные?».
Вы даже можете отправить одни и те же данные на все клиентские сокеты. Сохраните fds в таблице/списке/во что угодно и для каждой записи "fd" вызовите send (fd, buf, size, flags );
(Похоже, вы пытаетесь написать что-то вроде чат-сервиса, поэтому будете отправлять сообщения всем, кроме того, от которого получили:)
Если выбрать, кому вы хотите отправить сообщение, сложно, используйте таблицу структур с дополнительной информацией о каждом клиенте, чтобы принять решение.
Надеюсь, это решит вашу проблему.