GNU/Linux >> Linux の 問題 >  >> Linux

キャラクタードライバを開いて待つだけのシェルプログラム?

この質問に影響を与えたのは、ウォッチドッグデバイスの機能をテストしていて、デバイスを開いて何もしない/終了するまで待つシェル組み込みコマンドがあるかどうかを考えていたということです。
エコー/タッチ 操作を実行した直後にデバイスを開閉しているように見えます。 Cat 動作していないようです。

私はCアプリケーションを使用して同じことを行っていますが、シェルスクリプトに何らかのプロビジョニングがあるかどうか疑問に思っていました

承認された回答:

ボーンのようなシェルでは、

exec 3< "$device"

シェルのファイル記述子3でデバイスを開きます。

それは多かれ少なかれCと同等です:

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

ksh93 fcntl(3、F_SETFD、FD_CLOEXEC)も実行します そのfdで)。

閉じるには: exec 3 <&-

zshで 、 ksh93 およびbash fd =open(device、O_RDONLY)と同等 次のように書くこともできます:

exec {fd}< "$device"

ファイル記述子は、9を超える最初の空きファイル記述子であり、 $ fdに格納されます。 。

閉じるには: exec {fd} <&-

<を置き換えます >を使用 O_WRONLY | O_CREAT | O_TRUNCの場合 、および <> O_RDWR | O_CREATの場合 および>> O_WRONLY | O_CREAT | O_APPENDの場合 。

zsh sysopenもあります 組み込み( zsh / system 内) モジュール)フラグを正確に指定できます。

POSIX準拠のシェルでは、 exec 特別なビルトインであること 、ファイルを開くことができない場合、非対話型(スクリプトを終了する)のときに致命的なエラーになります。 コマンドを使用して無効にすることができます コマンド。

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

Linux
  1. Linux プラットフォーム ドライバーと通常のデバイス ドライバーの違いは何ですか?

  2. IOCTL Linux デバイス ドライバー

  3. デバイスファイルとデバイスドライバーの違い

  1. Bashでプログラミングする方法:構文とツール

  2. Linuxにデバイスドライバーをインストールする方法

  3. Linux –なぜSuだけでなくSuを使用するのですか?

  1. Unixシステムの文字特殊ファイルとブロック特殊ファイルとは何ですか?

  2. Linux –コンピュータのBIOSをシミュレートして仮想的にプログラムするためのNオープンソースソフトウェア?

  3. Wifiドライバー/デバイスの機能を見つけますか?