出力は 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
を使用しているように見えます 何かを構成するまでは、うまく機能しません。