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

C:popen() 関数によって実行された Linux コマンドが結果を表示しない

出力は stderr に行くので stderr をリダイレクトする必要があります そのように:

FILE* file = popen("ntpdate 2>&1", "r");

これは stderr をリダイレクトします stdout まで したがって、両方からの出力が表示されます。第二号 fscanf 最初のスペースで停止するので、 fgets に置き換えることができます :

fgets(buffer, 100, file);

Shafik Yaghmour が正しく診断したように、ntpdate からの出力は 標準エラーに (正しく) 書き込まれます。これは、プログラムの標準エラーと同じです。

パイプを介して送信されるエラー メッセージを取得するには、次を使用します。

FILE *file = popen("ntpdate 2>&1", "r");

ntpdate からの標準エラー出力を送信します 読み取り元のパイプであるコマンドの標準出力に。

もちろん、 ntpdate を使用しているように見えます 何かを構成するまでは、うまく機能しません。


Linux
  1. ntpdate:コマンドが見つかりません

  2. Linux での tee コマンドの例

  3. Python から Linux コマンドを実行する

  1. 別のコマンドのパラメーターとしての Linux コマンド出力

  2. Linux での find コマンドの結果の md5sum の出力

  3. Linux で関数ブロックからファイルに出力をリダイレクトする

  1. Linuxコマンドの出力を変数に割り当てる方法

  2. Linuxでコマンド出力をファイルに保存する方法

  3. Linux コマンド 'll' が機能しない