参数 type 可使用“r”代表读取,“w”代 表写入。 依照此 type 值, popen()会建立管道连 到子进程的标准输出设备或标准输入设备, 然后 返回一个文件指针。 随后进程便可利用此文件指 针来读取子进程的输出设备或是写入到子进程 的标准输入设备中。此外,所有使用文件指针 (FILE*) 操 作 的 函 数 也 都 可 以 使 用 , 除 了 fclose()以外。 返回值 若成功则返回文件指针,否则返回 NULL,错误 原因存于 errno 中。 错误代码 注意事项 EINVAL 参数 type 不合法。 在编写具 SUID/SGID 权限的程序时请尽量避免 使用 popen(),popen()会继承环境变量,通过 环境变量可能会造成系统安全的问题。 范例 #include main() { FILE * fp; char buffer[80]; fp=popen(“cat /etc/passwd”,”r”); fgets(buffer,sizeof(buffer),fp); printf(“%s”,buffer); pclose(fp); } 执行 root :x:0 0: root: /root: /bin/bash