![](/img/trans.png)
[英]How does Java actually spawn a process by ProcessBuilder on Windows platform?
[英]On Windows platform, how does nginx master process share listen sockets to worker?
我在Windows版本上查看了Nginx的代碼。 但我不明白大師是如何與工人分享監聽套接字的。
它在Linux上很直接。 當fork()時,worker繼承master的文件描述。
但是當談到Windows版本時,在CreateProcess()函數中,它將“bInheritHandles”參數字段指定為“0”,這意味着它不會繼承句柄!
那么工人們如何與主人分享聽力套接字?
我確實閱讀了兩天的代碼,只是為了找到這個問題的答案。 但我仍然無法理解。
謝謝!
*這個問題與另一個問題非常相似nginx工作進程如何共享'監聽套接字'但事實並非如此。 因為那個人正在詢問Linux平台上的那個。
它沒有。 相反,在Windows上,每個nginx工作進程都會創建自己的偵聽套接字,並使用它們來接受連接。
由於nginx在偵聽套接字上使用setsockopt(SO_REUSEADDR)
,因此可以在相同的端口上創建偵聽套接字,這樣就可以在Windows上完全重復偵聽套接字。
這些重復的偵聽套接字中只有一個實際上可以正常工作,這里是文檔中列出的Windows的nginx的第一個限制:
雖然可以啟動幾個工人,但其中只有一個工作。
請注意,Windows的nginx“被認為是測試版”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.