Domanda

Il modulo di sottoprocesso di Python per impostazione predefinita passa tutti i descrittori di file aperti a qualsiasi processo figlio generato. Ciò significa che se il processo padre è in ascolto su una porta e viene interrotto, non può riavviarsi e ricominciare ad ascoltare (anche utilizzando SO_REUSEADDR) perché il figlio è ancora in possesso di quel descrittore. Non ho alcun controllo sul processo figlio.

Il costruttore POpen del sottoprocesso accetta un argomento close_fds, che chiuderebbe i descrittori sul figlio, proprio come voglio. Tuttavia, esiste una limitazione, solo su Windows, che ne impedisce l'utilizzo se anche stdin / stdout vengono ignorati, cosa che devo fare.

Qualcuno è a conoscenza di una soluzione per questo su Windows?

È stato utile?

Soluzione

Quali sembrano essere le informazioni più rilevanti che posso trovare: SetHandleInformation , referenziato in questo articolo, dovrebbe darti suggerimenti.

Probabilmente dovrai usare pywin32 e / o ctypes per ottenere ciò che desideri.

Altri suggerimenti

Non ho una finestra di Windows in giro, quindi questo non è testato, ma sarei tentato di provare i metodi os.dup e os.dup2; duplicare i descrittori di file e utilizzare quelli anziché quelli principali.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top