我已经在这里浏览了大量的Google链接和问题,以便了解Pipping是如何工作的,但我似乎无法理解使我的stdout重定向到我的第二个程序的stdin的概念。
我正在尝试创建一个移动文本字符的程序,对其进行加密并将其放入字符串中。我的第二个程序应该接受该字符串并解密它。我理解创建管道所需的功能,但我不明白它是如何指向下一个程序的,我所看到的所有源代码似乎都包含父代和子代,而不是第二个项目。
答案 0 :(得分:2)
在两个程序之间建立管道'标准流是你如何启动程序的问题。如果执行另一个(例如if (isset($_GET[folder])) {
$gallery = $_GET[folder];
}
/ if (isset($_GET['folder'])) {
$gallery = $_GET['folder'];
}
),则父级创建具有fork()
的管道,父级和子级使用execlp()
来关联管道端点使用适当的文件描述符(在执行exec之前,在孩子的情况下)。
如果两个程序都没有启动另一个程序,那么 启动它们的程序(通常是shell)必须设置管道。
答案 1 :(得分:1)
假设您在基于unix的操作系统中使用shell,则使用管道|
字符来创建此链接。例如:我想运行program1并将program1的标准输出重定向到program2作为其标准输入。
program1 | program2
这是一个linux示例,使用ls
获取目录内容的名称,然后将其传递给head -3
以获取前三个文件的名称。然后我们将这三个名称传递给tail -1
以获取最后一个(或目录中第三个文件的名称)。
ls | head -3 | tail -1