GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ereignisgesteuertes Modell in C mit Sockets

"Was ist die Philosophie hinter diesem Modell"

Ereignisgesteuert bedeutet, dass es keine "Überwachung" gibt, sondern dass das Ereignis selbst die Aktion auslöst.

Normalerweise wird dies durch einen Interrupt ausgelöst, der ein Signal von einem externen Gerät an das System ist, oder (im Fall eines Software-Interrupts) durch einen asynchronen Prozess.

https://en.wikipedia.org/wiki/Interrupt

Weiterführende Literatur scheint hier zu sein:

https://docs.oracle.com/cd/E19455-01/806-1017/6jab5di2m/index.html#sockets-40- "Interrupt-Driven Socket I/O"

Auch http://cs.baylor.edu/~donahoo/practical/CSockets/textcode.html enthält einige Beispiele für Interrupt-gesteuerte Sockets sowie andere Socket-Programmierungsbeispiele.


Sie müssen unbedingt Folgendes lesen:http://www.kegel.com/c10k.html. Diese Seite ist der perfekte Überblick über ereignisgesteuerte und asynchrone Techniken.

Allerdings eine Quick &Dirty Antwort :ereignisgesteuert ist weder nicht-blockierend noch asynchron.

Ereignisgesteuert bedeutet, dass der Prozess seine Dateideskriptoren (und Sockets) überwacht und nur dann handelt, wenn ein Ereignis auf einem Deskriptor auftritt (Ereignisse sind:Daten empfangen, Fehler, beschreibbar geworden, ...).

BSD-Sockets haben die "select()"-Funktion. Wenn es aufgerufen wird, überwacht das Betriebssystem die Deskriptoren und kehrt zum Prozess zurück, sobald ein Ereignis bei einem der Deskriptoren auftritt.

Die obige Website bietet jedoch viel bessere Beschreibungen (und Details zu den verschiedenen APIs).


Linux
  1. Kernel-Tracing mit trace-cmd

  2. Seltsamer Ordner in /tmp mit Namen Ssh-*?

  3. Tastaturlayouts mit I3 wechseln?

  4. So installieren Sie AWStats mit einigen Plug-Ins auf einem Server mit ISPConfig

  5. MySQL-Ereignisplaner

Installieren Sie Linux mit LVM

Ersetzen Sie unter Linux du durch Staub

Bringen Sie mit lolcat Farbe in Ihr Linux-Terminal

Hinzufügen einer einfachen GUI zu Linux-Shell-Skripten mit kdialog

Lernen Sie Ereignis-Streaming mit diesem Apache Kafka-Tutorial

Wie deaktiviere ich die SSH-Anmeldung mit Passwort für einige Benutzer?