以下是我尝试运行的内容: (echo echo abc; echo echo def; echo echo ghi)| ./myprogram
因此myprogram的输入来自管道。
我试图将其读作:
while (fgets(line, MAXLINE+1, stdin)){
...
}
但据我所知,来自我的程序的输入现在是stdin,对吧? 所以它不起作用。我不知道如何更改我的程序,因此它适用于来自其他程序的输入。
谢谢!
答案 0 :(得分:0)
你提出的是完全你应该怎么做。通过将信息传递到您的程序中,它与常规输入几乎无法区分(a),如下面的记录显示:
pax$ cat testprog.c
#include <stdio.h>
int main (void) {
char line[1000];
while (fgets (line, sizeof(line), stdin)) {
printf ("%s", line);
}
return 0;
}
pax$ gcc -o testprog testprog.c
pax$ ( echo echo abc;echo echo def;echo echo ghi ) | ./testprog
echo abc
echo def
echo ghi
(a)有一些方法可以说明,例如isatty()
,但你必须付出一些努力。大多数情况下,文件或管道或设备的输入可以被视为您自己在键盘上输入它。