首页 > TAG信息列表 > pclose
Linux中popen函数的作用小结
简单说一下popen()函数 函数定义 1 2 3 #include <stdio.h> FILE * popen(const char *command , const char *type ); int pclose(FILE *stream); 函数说明 popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。linux关于管道的popen与pclose
管道:两个进程通过管道交换数据,一般一个进程输出通过管道连接到另一个进程的输入 popen和pclose是最简单两程序之间传递数据的方法; popen:FILEpopen(const char command,const charopen_mode) 允许一个程序将另一个程序作为新进程来启动 command:要运行的程序名和相应的参数 o在Windows上用PHP执行并获取pid后台进程
我在Windows apache服务器的后台启动了一个进程. index.php跟随此: <?php $cmd = "C:/xampp/php/php.exe -f test.php"; pclose(popen("start /B ". $cmd, "r")); echo "OK"; ?> test.php如下: <?php sleep(5); file_put_contents("1.tx[apue] popen/pclose 疑点解惑
问题请看这里: [apue] 使用 popen/pclose 的一点疑问 当时怀疑是pclose关闭了使用完成的管道,因此在pclose之前加一个足够长的sleep,再次观察进程文件列表: 哈哈,这下都能看到了。同时可以看出来子进程more的管道是经过重定向的,定向到了标准输入(stdin,0) 还可以观察到,父进程不关闭管道,子pclose返回值为什么要和256比较
#include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main(int argc, char *argv[]) { int status; pid_t pid; pid = fork(); if (0 == pid) { exit(atoi(argv[1])); } e