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

Warum wird select unter Linux verwendet

Programme, die dabei auch weiterlaufen wollen Das Lesen interaktiver Benutzereingaben muss multithreaded sein oder Sie müssen Eingabeströme sorgfältig und insbesondere bedingt lesen.

Select(2) kann verwendet werden, um das zweite Entwurfsmuster zu implementieren. Es kann bestimmen, ob Eingaben gelesen werden können, ohne die gesamte Anwendung zu blockieren.


Die select() Der Systemaufruf teilt Ihnen mit, ob in den Dateideskriptoren Daten zu lesen sind, an denen Sie interessiert sind. Streng genommen ist es eine Frage, ob eine Leseoperation für den Dateideskriptor blockiert oder nicht.

Wenn Sie read() ausführen auf einem Dateideskriptor – wie dem, der mit einer seriellen Schnittstelle verbunden ist – und es gibt keine zu lesenden Daten, dann bleibt der Aufruf hängen, bis einige Daten zu lesen sind. Programme, die select() verwenden möchte nicht so blockiert werden.

Sie fragen auch:

Warum müssen wir den Dateideskriptor um 1 erhöhen und übergeben, während ich den bereits auf select gesetzten Dateideskriptor übergebe ?

Das gibt wahrscheinlich die Größe des FD_SET an. Das erste Argument für select() ist als nfds bekannt und POSIX sagt:

Die nfds Argument gibt den Bereich der zu testenden Deskriptoren an. Die erste nfds Deskriptoren sind in jedem Satz zu prüfen; das heißt, die Deskriptoren von 0 bis nfds-1 in den Deskriptorsätzen untersucht werden.

Also, um einen Dateideskriptor n zu testen , der Wert in nfds muss mindestens n+1 sein .


Sie verwenden select call, wenn Sie Dateideskriptoren ständig überwachen müssen, bis sie für einige IO bereit sind, ohne zu blockieren.

Wird im Allgemeinen verwendet, wenn Sie möchten, dass das IO (z. B. read() ) nicht blockiert, lesen Sie die :Manpage

Lesen Sie auch die zugehörigen APIs


Linux
  1. Linux – Alles ist eine Datei?

  2. Dateiberechtigungen unter Linux – Lesen/Schreiben/Ausführen

  3. Abschneiden einer Datei während der Verwendung (Linux)

  4. Warum brauchen wir die .so.1-Datei unter Linux?

  5. Warum haben wir 3 Arten von X-Auswahlen in LINUX?

Linux-Dateibefehl

So erstellen Sie eine Datei unter Linux

Weniger Befehl unter Linux

Gzip-Befehl unter Linux

So lesen Sie eine Datei mit Leerzeichen in Linux

Von Linux-Systemadministratoren häufig verwendete Linux-Befehle – Teil 5