Межпроцессовые коммуникации
Клиент инициирует соединение с сервером для обмена сообщениями в обе стороны, для соединения создаётся отдельный процесс которому бог велит устанавливать коннектом (если будет обрываться) и организовать общение с сервером.
Вопрос:
с помощью каких средств лучше всего организовать общение родительского процесса с дочкой (разумеется, тоже в обе стороны)? погуглил на эту тему - нашёл и пайпы, и фифо, и глобальные переменные, и те же сокеты, но не совсем понимаю какие приимущества и какие недостатки у каждого.
я таких прог никогда не писал, и в общем-то даже не собирался. в сетевом программировании пока полный нуб, помогите советом :)
там сокет всего один, а клеенту не до сук ждать пока он соединиться (т.е. пока connect прорубается, ему надо ещё дела делать). :( а подключение у него только одно будет :)
з.ы. fork() - создаёт поток или процесс?
пайпы... уж больно непонятно с ними... вот к примеру, если я exec в дочке какой-то бинарник, то как ей лучше общаться с родительским процессом? в argv бинарник получает несколько параметров, а в stdout рапортует об ошибках/удачном завершении. в этом случае тоже пайпы лучше юзать (допустим как в трубу запихать стандартный вывод я ман вкурю :) ), или заложить в запускаемый бинарник возможность соединиться с локальным соектом, а у родителя запустить поток на прослушку этого сокета, после чего получить всё в сокет, а поток с экзеком убить?
Ну тогда тем более ничего не мешает создать поток который будет ждать подключения и обрабатывать данные.
з.ы. fork() - создаёт поток или процесс?
Процесс. Тоесть грубо говоря отдельную независимую программу в ОС, которая может выполняться вобще без первоночальной.
пайпы...
...
или заложить в запускаемый бинарник возможность соединиться с локальным соектом, а у родителя запустить поток на прослушку этого сокета, после чего получить всё в сокет, а поток с экзеком убить?
На самом деле какая принципиальная разница между исспользованием пайпов и сокетов? И там и там можно утановить соединение и писать/читать данные. У сокетов просто специализация несколько другая (сеть) и шире.
гм.. про локальные сокеты - они тоже имеют стек, как сетевые сокеты? абсолютно идентично работают?