ttyは動作しますが、プログラムを実行できません

ttyは動作しますが、プログラムを実行できません

だから私は周りを見回し、/dev/ttyS0ハムラジオ/dev/ttyUSB0アクセサリーを操作しようとすると、それを壊した。ttyS0無線送信を制御し、/dev/ttyS0一般ユーザーとしてcatを実行すると、無線が送信されます。

ところで、ラジオに使用していたモデムソフトウェア(FLdigi)を実行すると動作しませttys0ん。プログラムを起動すると、ログに「シリアルポートテストの失敗」というメッセージが表示されます。私は「dialout」グループと「uucp」グループの両方に属しているので、これがうまくいくと思います。

ランニングについて私が覚えていることの一つはですsudo chmod 777 /dev/ttyS0。何にリセットするのか分かりません。同じユーザーがアクセスできるのに実行中のソフトウェアがアクセスできない理由についてのアイデアはありますか?

ベストアンサー1

  • ポートを使用するには、そのポートが開いているアプリケーションがないことを確認してください。

  • カーネルログにメッセージがないことを確認します(を使用してdmesg)。

  • アプリケーションで正確に何が起こっているかを確認してください。アプリケーションを実行すると、straceアプリケーションで実行されたシステムコールが報告されます。次のようなものを使用したい場合があります。

    $ strace -f -s 512 -o /path/to/application.log.strace application ...
    

straceこれはまた、最大512バイトまで文字列を記録する子プロセスになり、すべて/path/to/application.log.straceアプリケーションの可能な引数を表す楕円で終わります。 PID(パラメータ)で識別される実行中のプロセスstraceに接続するように指示することもできます。詳細については、マニュアルページを-p参照してください。strace(1)ログの最後にwrite()エラーメッセージを出力する呼び出しを見つけることができます。可能比較的この直前に、open()or write()(デバイスファイル内)は-1を返します。これにより、エラーの原因が何であるかがわかります。

権限に関する注意:chmod 777ファイルを実行可能にするため、使用したくありません。これは、実行可能ファイルやディレクトリ以外のものには良い考えではありません。デバイスファイルの場合(特性に応じて)、合理的な値は0640または0660です。これは、ルートへのフルアクセスとグループへの読み取りまたは読み取り/書き込みアクセスを許可します(ユーザーはアクセス権を取得するにはグループのメンバーである必要があります。あなたの場合)これはおそらくあなたがdialout言及したグループです)。

ほとんどの場合、前にゼロを追加することをお勧めします(たとえば、chmod 0664suidビットが削除され、結果が通常良いアイデアです)。

おすすめ記事