我对编程比较陌生。我想要完成的是写入我认为它被调用的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;
}
答案 0 :(得分:2)
您正在做的是将实际的echo
shell 命令写入文件,而不是例如0=0
。
你应该只做
fprintf(fp, "%d=%d\n", i, i * i);
PS。您不必担心刷新文件缓冲区,它会在文件关闭时自动完成,并且当进程退出时文件将被关闭(但是明确关闭您打开的文件被认为是好的,即使它是在技术上不需要)。