我正在寻找一种方法来从终端的管道或通过指定一个文件名作为参数拉入到我的程序输入。有效地C输入通过管道或参数
1. foo | myprogram
OR
2. foo > bar; myprogram -w bar
第二个操作仅通过读取文件即可实现。然而,我正在绘制一个空白的如何使用管道将输出从foo
重定向到myprogram
。在我设法找到的所有例子中,Pipes几乎全部用于从父母到孩子的流程。我是在想一个合适的管道还是这是一个不同的机制?
我也意识到,当执行foo | myprogram
时,程序会被模拟执行。如果连续读入foo
,这是如何处理的。
编辑:
忘了包括这一点:
int main(){
char buff[255];
int i = read(0, buff, 255);
printf("Debug: %s\n", buff);
return 0;
}
例如如果我执行ls | myprogram
我倾向于接受。
. ../ files
Debug:
代替
Debug: . ../ files
你会想用'dup2'系统调用。 – squiguy
另请参见http://advancedlinuxprogramming.com/ –
做这样的'read'不能保证NUL终止的字符串,这是'printf'正常工作所需的字符串。另外,'read'将会阻塞,直到看到255个字符 - 数组中将不会有空间放置NUL字符。 – prprcupofcoffee