【发布时间】:2021-09-18 22:38:17
【问题描述】:
管道将一个进程的标准输出连接到另一个进程的标准输入:https://superuser.com/a/277327
这是一个从标准输入获取输入并打印的简单程序:
int main( ) {
char str[100];
gets( str );
puts( str );
return 0;
}
我可以使用 unix 管道来传递来自另一个进程的输入:
echo "hi" | ./a.out
我的问题是,上面的简单代码和使用pipe() 系统调用有什么区别?系统调用本质上是否在不写入终端的情况下完成相同的工作?有关管道的更多信息:https://tldp.org/LDP/lpg/node11.html
【问题讨论】:
-
不要使用
gets()。这是一个巨大的安全漏洞。请阅读Why is the gets function so dangerous that it should not be used? -
shell 使用
pipe()来实现|:你的问题没什么意义。另外:您似乎对终端感到困惑。终端在这里不相关。