Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заменить fork() на мультизадачную версию как и чем 
:(
    Опции темы
Viroman
Дата 24.9.2010, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Дорогие форумчане, есть кусок кода, который форчит процессы и соотвественно очень хочется переделать, поскольку программа и через cygwin компилится и запускается, а этот форк на винде вообще туши свет. Поэтому я очень надеюсь, что с вашей помощью получится переделать по человечески.

Код


   listen_socket = start_listen_socket(&addr_listen);

   if (fork() > 0) exit(0); /* Detach */

   write_pid_file(pid_file);

   /* New session -- become group leader */
   res = setsid();
   CHECK_RES_DIE(res, "setsid: already process leader");

   /* Main server loop: accept connections, find what they are, fork shovelers */
   while (1)
   {
      in_socket = accept(listen_socket, 0, 0);
      if (verbose) fprintf(stderr, "accepted fd %d\n", in_socket);

      if (!fork())
      {
         close(listen_socket);
         start_shoveler(in_socket);
         exit(0);

      }
      close(in_socket);
   }


Не буду указывать код самих функций, в общем мне просто необходимо заменить fork() на мультитридную весию. И огромная просьба, я очень ещё далёк от C и самого программирования на линуксе, поэтому если поможете изменить сам код, будет прекрасно, ну если нет, то хотя бы дайте пример, как до было с форк() и после мультитреадингом, чтобы я мог по указанному примеру спрограммировать.
Спасибо вам огромное заранее.
PM MAIL   Вверх
boostcoder
Дата 24.9.2010, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



назначение fork() известно?
о какой многопоточности идет речь? это разные способы.
PM WWW   Вверх
Viroman
Дата 24.9.2010, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Уважаемый бутскодер, 
может если вам я дам весь код, вы глянете и резонно ответите, можно ли так перепрограммировать, чтобы не открывались новые процессы запущенной программы. Всё, что нужно, переделать так, чтобы сокетные соединения слушались как и прежде, но так, чтобы каждый новый сокет обрабатывался в своём новом потоке не создавая новую копию процесса как отдельную программу. Чтобы не заниматься вопросами моих знаний, ибо это будет для вас абсолютно не важно, знаю ли я что нибудь по факту или нет, просто по человечески помогите, если умеете. ;)
PM MAIL   Вверх
boostcoder
Дата 24.9.2010, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(Viroman @  24.9.2010,  19:05 Найти цитируемый пост)
нужно, переделать так, чтобы сокетные соединения слушались как и прежде, но так, чтобы каждый новый сокет обрабатывался в своём новом потоке

вот. теперь понял.
кода много?
PM WWW   Вверх
Viroman
Дата 24.9.2010, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Код в личке, его не так много, если не сказать, что мало, благодарю заранее.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.