Napisałem małą niestandardową aplikację serwera WWW w języku C działającym pod kontrolą systemu Linux. Kiedy aplikacja otrzymuje żądanie, wywołuje fork() i obsługuje żądanie w oddzielnym procesie, który jest chrootowany do określonego katalogu zawierającego pliki, które chcę udostępnić.odpowiednik fork/chroot dla aplikacji serwera Windows
Chcę przenieść aplikację do systemu Windows, ale ani fork(), ani chroot() nie są dostępne na tej platformie i nie ma żadnych bezpośrednich odpowiedników. Czy możesz wskazać mi prosty (najlepiej napisany) przykład kodu, który zapewni tę funkcjonalność w systemie Windows? Moje C nie jest aż tak dobre, więc im prostsze, tym lepiej.
Odpowiedzi do tej pory wskazują, że nie ma prostego alternatywą fork(), jestem zadowolony rozważyć użycie oddzielnego wątki, a nie rozwidlają nowy proces, ale nadal chciałbym podać przykład kodu. Istnieje wiele serwerów sieciowych działających pod Windows (np. Apache), które muszą adresować zarówno części fork(), jak i chroot() tego problemu, zaakceptowałyby krótkie podsumowanie podejścia, które jest zwykle podejmowane i łączy się z odpowiednimi częściami źródła Apache (lub innego). – codebox
Biorąc pod uwagę twój komentarz, sugeruję, aby nie opierać swojego kodu na źródle próbnym Cygwin, ale zamiast tego użyć biblioteki Apache Portable Runtime, aby zająć się szczegółami. –
Też myślę, że powinieneś pójść z jakąś biblioteką. Zobacz także: http://www.gnu.org/software/libmicrohttpd/ - Biblioteka serwerów HTTP obsługująca systemy Windows i Unix. Służy do osadzania funkcjonalności serwera internetowego w twoim programie. http://abyss.sourceforge.net/ - serwer WWW dla wygrywa/unix Ponadto można zapomnieć o wątkach i procesach oraz użyć niezablokowującego IO. W ten sposób potrzebujesz tylko jednego procesu, zamiast tego śledzisz połączenia na liście lub tablicy. Przykład: http://www.cubicsky.com/files/shinyhttpd-0.1.3-src.tar.gz –