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

Shell-Programm, um einfach einen Zeichentreiber zu öffnen und zu warten?

Was diese Frage inspiriert hat, ist, dass ich die Funktionalität des Watchdog-Geräts teste und überlegt habe, ob es einen in die Shell integrierten Befehl gibt, um das Gerät einfach zu öffnen und nichts zu tun/zu warten, bis es beendet ist?
Echo/touch scheinen das Gerät unmittelbar nach der Durchführung des Vorgangs einfach zu öffnen und zu schließen. Cat scheint nicht zu funktionieren.

Ich verwende eine C-Anwendung, um das Gleiche zu tun, habe mich aber gefragt, ob Shell-Skript eine Vorkehrung dafür hat

Akzeptierte Antwort:

In Bourne-ähnlichen Muscheln,

exec 3< "$device"

Öffnet das Gerät auf Dateideskriptor 3 der Shell.

Das wäre mehr oder weniger äquivalent zu Cs:

fd = open(device, O_RDONLY);
if (fd < 0) handler_error(...);
if (fd != 3) { dup2(fd, 3); close(fd); }

(ksh93 macht auch ein fcntl(3, F_SETFD, FD_CLOEXEC) auf diesem fd).

Um es zu schließen:exec 3<&-

In zsh , ksh93 und bash , das Äquivalent von fd = open(device, O_RDONLY) könnte auch geschrieben werden als:

exec {fd}< "$device"

Wobei der Dateideskriptor der erste freie über 9 wäre und in $fd gespeichert wäre .

Um es zu schließen:exec {fd}<&-

Ersetzen Sie < mit > für O_WRONLY|O_CREAT|O_TRUNC , und mit <> für O_RDWR|O_CREAT und >> für O_WRONLY|O_CREAT|O_APPEND .

zsh hat auch ein sysopen eingebaut (im zsh/system Modul), wo Sie die Flags genau angeben können.

Beachten Sie, dass in POSIX-kompatiblen Shells exec ein spezielles eingebautes sein , wenn die Datei nicht geöffnet werden kann, ist dies ein schwerwiegender Fehler, wenn sie nicht interaktiv ist (das Skript wird beendet). Sie können dies mit dem command deaktivieren Befehl.

if command exec 3< "$device"; then
  do-what-you-need-to-do
else
  handle-the-error-yourself
fi

Linux
  1. Programmieren mit Bash:Syntax und Tools

  2. So installieren Sie einen Gerätetreiber unter Linux

  3. Ssh – Wie enteigne ich einen laufenden Prozess und verknüpfe ihn mit einer neuen Bildschirm-Shell?

  4. Unterschied zwischen Login-Shell und Nicht-Login-Shell?

  5. Linux – Warum verwenden wir Su – und nicht nur Su?

So installieren und verwenden Sie Nu Shell unter Linux

Linux – N Open-Source-Software zur Simulation und virtuellen Programmierung eines Computer-Bios?

Fähigkeiten des WLAN-Treibers/-Geräts finden?

Wie man ein C-Programm unter Linux schreibt und ausführt

Bestimmen Sie, ob relativer oder absoluter Pfad im Shell-Programm

Kann ein Shell-Skript darauf warten, dass sich eine Datei ändert, und Maßnahmen ergreifen?