Дорогие форумчане, есть кусок кода, который форчит процессы и соотвественно очень хочется переделать, поскольку программа и через 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 и самого программирования на линуксе, поэтому если поможете изменить сам код, будет прекрасно, ну если нет, то хотя бы дайте пример, как до было с форк() и после мультитреадингом, чтобы я мог по указанному примеру спрограммировать. Спасибо вам огромное заранее. |