Mein schlafender Prozess akzeptiert TCP-Verbindungen?

Mein schlafender Prozess akzeptiert TCP-Verbindungen?

Nach dem Senden des STOP-Signals an einen Prozess funktioniert dieser nicht mehr wie erwartet, akzeptiert aber weiterhin TCP-Verbindungen. Funktioniert er also trotzdem?

Antwort1

Sobald ein Unix-Prozess eine IP-Adresse und einen Port an einen Stream-Socket bindet, beginnt der Kernel, TCP-Verbindungen für diese Adresse/diesen Port zu akzeptieren, und fährt damit fort, bis der Socket aufgehoben oder geschlossen wird. Der Prozess erhält über den Systemaufruf accept() Zugriff auf die Verbindungen, aber die Verbindungen werden trotzdem hergestellt. Nach dem anfänglichen TCP-Handshake ist die Verbindung inaktiv, bis accept() aufgerufen wird und der Prozess beginnt, den verbundenen Socket zu verwenden. Der Kernel akzeptiert, puffert und bestätigt auch eine systemspezifische Datenmenge, bevor accept() aufgerufen wird.

Es werden also Verbindungen hergestellt, es findet jedoch keine echte Aktivität statt (Versand von E-Mails, Bereitstellung von Webseiten usw.), während der Prozess gestoppt ist.

verwandte Informationen