Название: кроссплатформенный fork() в Qt? Отправлено: Павел_F. от Март 24, 2010, 10:25 Переделываю прогу. Изначально она на с++ под Linux. Цель моя переделать ее на кроссплатформенное Qt. В коде постоянно встречаются такие куски:
Код Чем заменить? Никак не соображу... Название: Re: кроссплатформенный fork() в Qt? Отправлено: BRE от Март 24, 2010, 11:05 Ничем, не на всех платформах есть подобный системный вызов.
Тут нужно смотреть по логике работы программы, для чего она форкается и что делает после этого. Название: Re: кроссплатформенный fork() в Qt? Отправлено: Павел_F. от Март 24, 2010, 11:14 Я знаю что не у всех есть. Это сервер. После форка один продолжает ждать новых клиентов, а в другом начинается обмен с подключившимся. Можно переделать на потоки, а не процессы... Но в этом еще нужно убедить заказчика, а это не просто. Просто смотрю в сторону QProcess и теплится надежда...
Название: Re: кроссплатформенный fork() в Qt? Отправлено: p166 от Март 25, 2010, 09:49 Fork делает копию памяти процесса и оставляет его жить собственной жизнью без какой либо связи с головным приложением, такая функция существует только в Linux! В случае кроссплатформенного решения тут поможет только полная переделка на потоки, хотя это и не обеспечит прежней логики, работать будет, но, повторюсь, потребуется довольно большая переделка всего приложения.
А заказчику нужно сказать, что в связи с ограничением других ОС, необходимо пределать на потоки, или пусть забудет про кроссплатформенность. Название: Re: кроссплатформенный fork() в Qt? Отправлено: Павел_F. от Март 25, 2010, 09:59 Это я знаю.
Хотя всегда думал что fork() в POSIX есть, не только в Linux. Уже переделываю на потоки. Название: Re: кроссплатформенный fork() в Qt? Отправлено: gigabyte от Март 25, 2010, 11:15 Если будети время взгляни на Firebird Classic Server там что-то подобное сделано т.е. сидит один "смотрящий" сервер и при поступлении конектор запускает свои же копии которые уже их и обрабатывают. Єто под виндой тоже работает
Название: Re: кроссплатформенный fork() в Qt? Отправлено: Павел_F. от Март 25, 2010, 11:21 Тут такой момент что сделать с нуля и переделать то что есть это разные вещи. Так сделать можно. Но это нужно изначально учитывать еще до написания кода. У меня же все уже сделано да не так. И хочется переделать с минимальными потерями а не написать такой же но другой с нуля.
Название: Re: кроссплатформенный fork() в Qt? Отправлено: Пантер от Март 25, 2010, 11:24 PostgreSQL тоже делает по экземпляру на клиента.
Название: Re: кроссплатформенный fork() в Qt? Отправлено: gigabyte от Март 25, 2010, 12:07 Вывод?
Кросплатформенный fork() - есть. может не в том смысле как в Linux то он есть. Название: Re: кроссплатформенный fork() в Qt? Отправлено: Rcus от Март 25, 2010, 12:09 В Cygwin есть эмуляция fork(), но после чтения того как это делается желание использовать отпадает.
|