【发布时间】:2020-12-09 02:45:00
【问题描述】:
我想将标准输入重定向到一个文件,以便我可以写入该文件并且我的程序会打印该字符。 下面是一个简单的c代码sn-p,打印stdin。
该程序使用 gcc 编译并在 virtualbox 中的 debian 4.19.0 上运行
//printchar.c
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int c;
while( (c = getchar()) !='.') {
putchar(c);
}
return EXIT_SUCCESS;
}
我用./printchar 0 < testfile.txt调用程序
然后我 echo efghi > testfile.txt 但没有任何反应。
如果我用 abcd 预填充文件,abcd 会在程序启动后立即打印,但我又无法将某些内容回显到 testfile。
不可以这样重定向stdin吗?
【问题讨论】:
-
听起来你想要一个命名管道。 man mkfifo
-
你可以试试这个:
tail -f -n +1 testfile.txt | ./printchar和echo defg > testfile.txt在另一个终端上。
标签: c linux redirect gcc stdin