GNU/Linux >> Belajar Linux >  >> Linux

Program Shell Untuk Hanya Membuka Driver Karakter Dan Tunggu?

Apa yang mengilhami pertanyaan ini adalah bahwa saya sedang menguji fungsionalitas perangkat pengawas dan saya berpikir jika ada perintah bawaan shell untuk membuka perangkat dan tidak melakukan apa pun/menunggu sampai dihentikan?
Echo/touch tampaknya hanya membuka dan menutup perangkat segera setelah melakukan operasi. Cat sepertinya tidak berhasil.

Saya menggunakan aplikasi C untuk melakukan hal yang sama tetapi bertanya-tanya apakah skrip shell memiliki beberapa ketentuan untuk itu

Jawaban yang Diterima:

Dalam cangkang mirip Bourne,

exec 3< "$device"

Membuka perangkat pada deskriptor file 3 dari shell.

Itu kurang lebih setara dengan C:

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

(ksh93 juga melakukan fcntl(3, F_SETFD, FD_CLOEXEC) di fd itu).

Untuk menutupnya:exec 3<&-

Dalam zsh , ksh93 dan bash , setara dengan fd = open(device, O_RDONLY) dapat juga ditulis sebagai:

exec {fd}< "$device"

Di mana deskriptor file akan menjadi yang pertama gratis di atas 9 dan disimpan di $fd .

Untuk menutupnya:exec {fd}<&-

Ganti < dengan > untuk O_WRONLY|O_CREAT|O_TRUNC , dan dengan < untuk O_RDWR|O_CREAT dan >> untuk O_WRONLY|O_CREAT|O_APPEND .

zsh juga memiliki sysopen bawaan (dalam zsh/system module) di mana Anda dapat menentukan flag dengan tepat.

Perhatikan bahwa dalam shell yang sesuai dengan POSIX, exec menjadi bawaan khusus , jika file tidak dapat dibuka, itu adalah kesalahan fatal ketika non-interaktif (keluar dari skrip). Anda dapat menonaktifkannya dengan menggunakan command perintah.

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

Linux
  1. Cara memprogram dengan Bash:Sintaks dan alat

  2. Linux – Sysfs dan Devtmpfs?

  3. Cara membaca hanya satu karakter dalam skrip shell

  1. Apa perbedaan antara driver platform Linux dan driver perangkat biasa?

  2. Pengandar perangkat IOCTL Linux

  3. perbedaan antara file perangkat dan driver perangkat

  1. Cara menginstal driver perangkat di Linux

  2. Ssh – Bagaimana Cara Menyangkal Proses yang Berjalan Dan Mengaitkannya ke Shell Layar Baru?

  3. Bisakah skrip shell menunggu file berubah dan mengambil tindakan?