1. 首页
  2. 操作系统
  3. Unix
  4. 协同进程-鸿鹄论坛_华为认证h35-211-hcnp-access network题库

协同进程-鸿鹄论坛_华为认证h35-211-hcnp-access network题库

上传者: 2024-07-15 19:44:01上传 PDF文件 18.16MB 热度 8次

协同进程是UNIX过滤程序的一种高级应用,它能够在读取标准输入的数据后进行处理,并将处理结果写到标准输出。在shell管道命令中,多个过滤进程通常线性连接形成一个处理链。当同一个程序生成一个过滤程序的输入,并且读取该过滤程序的输出时,这个过滤程序就成为协同进程。Korn Shell提供了协同进程,而Bourne shell和C shell则不具备此功能。

协同进程通常在shell的后台运行,其标准输入和输出通过管道连接到另一个程序。尽管初始化一个协同进程并将其输入和输出连接到另一个进程的shell语法较为复杂,但在C程序中使用协同进程同样非常有用。popen函数可以提供一个单行管道连接到另一个进程的标准输入或输出,而对于协同进程,它提供了两个单行管道:一个连接到标准输入,另一个连接到标准输出。数据首先被写入标准输入,经过处理后,从标准输出读取。

通过一个实例可以更好地理解协同进程的工作方式。进程创建两个管道:一个用于协同进程的标准输入,另一个用于标准输出。下图展示了这种安排:

下面的程序示例展示了一个简单的协同进程,它从标准输入读取两个数,计算它们的和,然后将结果写至标准输出。


#include 

int main() {

    int a, b;

    while (scanf("%d %d", &a, &b) == 2) {

        printf("%d\n", a + b);

    }

    return 0;

}

这段代码展示了如何创建一个协同进程,通过两个管道实现标准输入和标准输出的连接,数据写入标准输入后,经过处理,从标准输出读取结果。这种方式在处理复杂数据流时非常高效,特别是在UNIX环境下编写高级程序时。

参考文献和进一步阅读可以通过以下链接获取:

  1. Learning Unix Korn Shell

  2. Korn Shell Programming

  3. Korn Shell UNIX and Linux Programming Manual Third Edition

用户评论