用c写入FIFO文件

时间:2013-02-24 06:35:17

标签: c bash raspberry-pi fifo raspbian

我对编程比较陌生。我想要完成的是写入我认为它被调用的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;
   }

1 个答案:

答案 0 :(得分:2)

您正在做的是将实际的echo shell 命令写入文件,而不是例如0=0

你应该只做

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

PS。您不必担心刷新文件缓冲区,它会在文件关闭时自动完成,并且当进程退出时文件将被关闭(但是明确关闭您打开的文件被认为是好的,即使它是在技​​术上不需要)。