1

私はプログラミングに比較的慣れていません。私が達成しようとしているのは、FIFOファイルに書き込むことです。基本的に、ターミナルウィンドウにいる場合は、コマンドを実行できますがecho "0=0" > /dev/pi-blaster、意図したとおりに機能します。だから私がやりたいのは、基本的にそのコマンドを実行するが、二重引用符の間の数字を変更するプログラムを書くことです。ループで数値を変更する方法を知っています。実際にファイルを書き込むのに問題があります。コンパイル中または実行中にエラーが生成されることはなく、上記のコマンドを入力したかのように機能しません。私が言ったように、私はプログラミングに不慣れなので、おそらく私は正しい道を進んでいません。以下にコードを含めました。

#include <stdio.h>
#include <stdlib.h>

   int main(void)
   {
      FILE *fp;
      int i;

      fp = fopen("/dev/pi-blaster", "w");
      if (fp == NULL) {
         printf("I couldn't open pi-blaster for writing.\n");
         exit(0);
      }

      for (i=0; i<=10; ++i)
         fprintf(fp, "echo %d=%d", i, i*i);

      return 0;
   }
4

1 に答える 1

2

あなたがしているのは、例えばではなく、実際のechoシェルコマンドをファイルに書き込むことです0=0

あなただけがすべきです

fprintf(fp, "%d=%d\n", i, i * i);

PS。ファイルバッファのフラッシュについて心配する必要はありません。ファイルが閉じられると自動的に実行され、プロセスが終了するとファイルが閉じられます(ただし、開いているファイルが明示的に閉じられている場合でも、明示的に閉じることをお勧めします。技術的には必要ありません)。

于 2013-02-24T06:39:49.193 に答える