什么是C ++中的管道和分支

时间:2013-10-08 13:42:43

标签: fork pipe

我最近偶然发现了一个叫做烟斗(所有小写字母)和叉子(也都是小写字母)的东西。显然,管道“是一种将一个过程的标准输出连接到另一个过程的标准输入的方法”。我不明白的是过程的标准输入输出是什么意思。我已经知道函数可以调用其他函数并使用它们返回的值,所以管道有什么特别之处,为什么我们需要管道?我从来没有在我的C / C ++书籍中遇到过这些,这有什么神秘之处?在两个应用程序之间进行通信的简单方法(我在这里没有使用“进程”一词)是一个应用程序创建一个文件,调用另一个应用程序并让它打开该文件并处理其数据并创建一个新的结果文件而不是自行终止。比原始应用程序可以继续处理并从结果文件中读取并删除它首先创建的文件。这是两个应用程序进行通信的简单方法,我认为在.fframworks和复杂操作系统时代,这一点必须更加容易吗?

另外,什么是叉子?这是C ++特有的东西吗?我记得在互联网上的某个地方读过,通过使用fork,我们可以从C ++应用程序中打开另一个应用程序。但是,我不知道这种方法的局限性和影响以及它可能带来的任何缺点。为什么我们需要分叉?它做了什么?

我不希望任何人必须写几页信息。我只是想了解这些是什么,它们做了什么,为什么我们需要它们,以及我的C / C ++书怎么没有涵盖这两个?

1 个答案:

答案 0 :(得分:1)

这些是unix系统调用。它们不是C ++语言或标准库的一部分,但特定于类Unix操作系统。

fork创建了一个新流程,pipe创建了一个单向沟通渠道。管道和叉子经常组合在一起并用于进程间通信。