pclose 子例程

用途

关闭到进程的管道。

标准 C 库 (libc.a)

语法

#include <stdio.h>

int pclose ( Stream)
FILE *Stream;

描述

pclose 子例程关闭调用程序与要执行的 shell 命令之间的管道。 使用 pclose 子例程来关闭使用 popen 子例程打开的任何流。 pclose 子例程等待关联的进程结束,然后返回命令的退出状态。

注意: 如果原始进程和 popen 进程正在读取或写入公共文件,那么 popen 子例程和 pclose 子例程都不应使用缓冲 I/O。 如果这样做,那么结果是不可预测的。

通过使用 fflush 子例程清空缓冲区来避免输出过滤器出现问题。

参数

表 1. 参数
描述
指定打开的管道的 FILE 指针。

返回值

如果 Stream 参数未与 popen 命令相关联,或者可能无法获取子进程的状态,则 pclose 子程序会返回 -1 的值。 否则,将返回命令语言解释器的终止状态值; 如果无法执行命令语言解释器,那么将返回 127。

错误代码

如果应用程序具有:

  • 调用了 wait 子例程,
  • 调用了进程标识小于或等于零或等于命令行解释器的进程标识的 waitpid 子例程,
  • 屏蔽了 SIGCHILD 信号,或者
  • 调用了可能在此之前执行其中一个步骤的任何其他函数,并且

其中一次调用导致 pclose 子程序的终止状态不可用,返回值为 -1 ,全局变量 errno 设为 ECHILD