首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

优雅玩PHP多进程

0 表示标准输入(stdin),1 表示标准输出(stdout),2 表示标准错误(stderr)。 数组元素可以是: 包含了要传送至进程管道描述信息。...有效类型有:pipe (第二个元素可以是: r 向进程传送该管道读取端,w 向进程传送该管道写入端), 以及 file(第二个元素为文件名)。...设置此参数为 NULL 表示使用和当前 PHP 进程相同环境变量。 other_options 你还可以指定一些附加选项。...php $descriptorspec = array( 0 => array("pipe", "r"), // 标准输入,子进程从此管道读取数据 1 => array("pipe",...// 0 => 可以向子进程标准输入写入句柄 // 1 => 可以从子进程标准输出读取句柄 // 错误输出将被追加到文件 /tmp/error-output.txt

51720
您找到你想要的搜索结果了吗?
是的
没有找到

WindowsAPI 之 CreatePipe、CreateProcess

匿名管道主要用于本地父进程和子进程之间通信,在父进程的话,首先是要创建一个匿名管道,在创建匿名管道成功后,可以获取到对这个匿名管道读写句柄,然后父进程就可以向这个匿名管道写入数据和读取数据了,但是如果要实现是父子进程通信的话...同时在创建子进程时候,必须将子进程标准输入句柄设置为父进程创建匿名管道时得到管道句柄,将子进程标准输出句柄设置为父进程创建匿名管道时得到管道句柄。然后在子进程就可以读写匿名管道了。...(如果是父进程从子进程读取数据,那么由子进程调用GetStdHandle()取得管道写入句柄,并调用WriteFile()将数据写入到管道。...如管道缓冲已满而数据还没有写 完,WriteFile()将要等到另一进程管道数据读取以释放出更多可用空间后才能够返回。...当父进程向子进程发送数据时,用SetStdHandle()将 管道读句柄赋予标准输入句柄(这样就不会从标准输入读入数据,而从读句柄所表示位置读取数据);在从子进程接收数据时,则用SetStdHandle

3.6K10

在 Node.js 通过子进程操作标准输入输出

翻译:疯狂技术宅 原文:http://2ality.com/2018/05/child-process-streams.html 在本,我们在 Node.js 把 shell 命令作为子进程运行。...然后异步读取这些进程 stdout 并写入其 stdin。...在 A 行,我们将子进程 stdin 连接到当前进程 stdin。 B 行等待该过程完成。 等待子进程通过 Promise 退出 函数 onExit()如下所示。...从子进程读取数据 下面的代码使用异步迭代(C行)来读取进程 stdout 内容: 1const {chunksToLinesAsync, chomp} = require('@rauschma...在子进程之间进行管道连接 在下面的例子,函数transform() 将会: 从 source 子进程 stdout 读取内容。 将内容写入 sink 子进程 stdin。

3.2K30

pythonsubprocess

python2.7 源码注释(由于能力有限,翻译不太准确): 这个模块允许您开启进程、连接输入、输出和错误管道,并获取他们返回代码。...如果参数是一个序列,第一项指定命令字符串,其他将被视为附加shell命令参数。 在Windows:Popen类通过使用CreateProcess()执行这个子进程来对字符串操作。...PIPE创建一个新管道。None,没有重定向;子管道将会继承父管道文件句柄。此外,标准错误可以用STDOUT来定义,表明应用程序应该从STDOUT捕获到相同文件句柄标准错误数据。...此外,异常对象会有一个额外称为'child_traceback'属性,从子进程角度上看,这是一个包含错误信息字符串。 ...注意:读取数据是保存在缓冲区,因此,如果数据太大或没有限制则不要使用这个方法 下面的属性也是有效: =====================  stdin     如果stdin参数是PIPE,

1.6K30

解决linux系统运行node进程无法杀死进程问题

下面先给大家介绍下linux系统运行node进程无法杀死进程,具体内容如下所示: events.js:72 throw er; // Unhandled 'error' event ^ Error:..._load (module.js:312:12) 之前开了一个8888 端口,可以访问,后来把 shell 死掉了,8888 依然可以访问。...之后在从新运行 8888端口服务 报了上面的错误 解决办法:pkill node 知识点扩展:Linux杀死/启动node进程 Linux杀死node进程 sudo pkill node Linux启动...node项目 sudo nohup node xxx.js sudo nohup node xxx.js > xxx.txt 2>&1 & 总结 以上所述是小编给大家介绍解决linux系统运行node...进程无法杀死进程问题,希望对大家有所帮助,也非常感谢大家对ZaLou.Cn网站支持!

3K21

如何读取Linux进程代码段和数据段

Linux下程序文件格式是ELF,里面分了各种段,有代码段、数据段、等。当运行这个程序时,系统也会给这个进程创建虚拟内存,然后把ELF数据分别加载到内存对应位置。...本文整理了用cpp程序读取内存代码段和rodata数据段方法。.../proc/pid/mem mem是内核创建虚拟文件,是Linux”一切皆文件”在进程体现,但是这个文件无法直接进行读取,需要先利用ptrace进行绑定操作。...用ptrace绑定之后就可以用read来读取这个“文件”了,但是要注意输入读取地址不对,也读不出数据来。...用程序读取内存代码段和rodata数据段 以tcpdump程序为例,用程序读取代码段和radata过程如下: 1.查看tcpdump进程ID。

3.5K20

subprocess:Python创建子进程

对于run()函数启动进程,它标准输入输出通道会绑定到父进程输入输出。这说明调用程序无法捕获命令输出。不过,我们可以通过为stdout和stderr参数传入PIPE来捕获输出,以备以后处理。...('gbk')) 运行之后,效果如下: 这里我们输入了一个错误命令,可以看到因为命令错误,并没有输出命令执行结果,0和64间就是completed.stdout,为空。...Popen构造函数利用参数建立新进程,使父进程可以通过管道与之通信。 下面,我们来分别介绍进程间通信方式。...与进程单项通信 要运行一个进程读取所有输出,可以设置stdout为PIPE并调用communicate()函数。...连接管道段 在Linux系统,我们可以将多个命令连接成一个管线,即可以把它们输入输出串联在一起。

39870

笨办法学 Linux 8~11

这是程序读取东西地方。 stdout - 标准输出。这是程序写出东西地方。 stderr - 标准错误。这是程序报错地方。...获取当前目录文件列表 向显示器写出错误 向管道写出输出 启动 tr -s ' ' 通过管道从 ls -al 读取输入 两个字段之间只保留一个空格...fg接受一个数字作为参数,它可以从jobs获取数,或者如果无参数调用,则将最后一个挂起程序带到前台。 ctrl + c - 一次性停止执行当前运行程序。...在 Linux ,有一个标准机制,用于获取从子进程到父进程信息,这个机制称为退出状态或返回代码。...通过使用这种机制,当子进程完成其工作时,一个小数字从子进程(或被调用者,这里是cp)传递给父进程(或调用者,这里是 bash)。

62120

C语言中调用系统命令(system popen...)

,由子进程来调用/bin/sh-cstring来执行参数string字符串所代表命令,此命令执行完后随即返回原调用进程。...附加说明 在编写具有SUID/SGID权限程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全问题。...,然后从子进程调用/bin/sh -c来执行参数command指令。...参数type可使用“r”代表读取,“w”代表写入。依照此type值,popen()会建立管道连到子进程标准输出设备或标准输入设备,然后返回一个文件指针。...随后进程便可利用此文件指针来读取进程输出设备或是写入到子进程标准输入设备。此外,所有使用文件指针(FILE*)操作函数也都可以使用,除了fclose()以外。

5.1K30

pythonsubprocess模块

subprocess模块提供了一种一致方法来创建和处理附加进程,与标准库其它模块相比,提供了一个更高级接口。...通常情况下,退出状态码为0则表示进程成功运行了;一个负值-N表示这个子进程被信号N终止了 ​ stdout从子进程捕获stdout。...如果run()函数被调用时指定 ​ ​stderr=subprocess.STDOUT,那么stdout和stderr将会被整合到这一个属性,且stderr将会为None stderr: 从子进程捕获...需要说明是,该方法在python3.x才有。 call()方法启动进程,其标准输入输出会绑定到父进程输入和输出。调用程序无法获取命令输出结果。...()读不出来 ​ 要读出来要先输出到标准输出里,先存到管道PIPE 再给stdout python和shell是两个进程不能独立通信,必须通过操作系统提供管道 ​ 用管道可以把结果存到stdin stdout

3K20

关于 devnull 差点直播吃鞋一个小问题

进程与文件描述符 fd 关系 /dev/null 文件来龙去脉,读取写入内核源码分析 重定向本质 管道概念初探 进程与文件描述符 fd 接下来我们先来看看进程与文件描述符 fd 之间关系。...grep 进程,同时将 nc 进程标准输出通过管道方式连接到 grep 进程标准输入 zsh 进程启动了 wc 进程,同时将 grep 进程标准输出通过管道方式连接到 wc 进程标准输入...在 linux ,创建管道函数是 pipe,常见创建管道方式如下所示。...,在父进程可以读取并显示在终端中了。...小结 这篇文章从一个小例子介绍了进程相关三个基础文件描述符:stdin、stdout、stderr,以及这三个文件描述符如何进行重定向。顺带介绍了一下管道相关概念,好了,鞋吃饱了,睡觉。

52220

Linux内核编程--管道pipe

管道定义: 管道是一种进程间通信机制,也是Linux操作系统一种文件形式。一个进程写入管道数据可以被另一个进程读取。数据按先进先出顺序处理。Linux有两种形式管道文件,管道和FIFO。...管道或FIFO都可以使用read/write函数访问,且读写操作都是按顺序发生,从文件开头读取并在末尾写入(先进先出机制)。管道或 FIFO 必须同时在读写两端打开。...,没有正常调用fork()或pipe()时返回 NULL --popen()会调用fork()产生子进程,然后从子进程调用/bin/sh -c来执行参数command指令 --参数type可使用"r..."代表读取,"w"代表写入 --popen()会建立管道连到子进程标准输入/输出设备,然后返回一个文件指针 int pclose(FILE *stream); --运行成功时返回0,失败时返回-1...FIFO原子性,需要对管道和FIFO加以限制: OPEN_MAX: 一个进程在任意时刻打开最大描述符数 PIPE_BUF:可原子地写往一个管道或FIFO最大数据量 shell脚本管道指令:

3.7K10

Python模块学习:subprocess模块详解

一.subprocess模块subprocess是Python 2.4新增一个模块,它允许你生成新进程,连接到它们 input/output/error 管道,并获取它们返回(状态)码。...通常情况下,退出状态码为0则表示进程成功运行了;一个负值-N表示这个子进程被信号N终止了stdout从子进程捕获stdout。...如果run()函数被调用时指定stderr=subprocess.STDOUT,那么stdout和stderr将会被整合到这一个属性,且stderr将会为Nonestderr: 从子进程捕获stderr...Popen.communicate(input=None, timeout=None) 该方法可用来与进程进行交互,比如发送数据到stdin,从stdout和stderr读取数据,直到到达文件末尾。...,实际上就是实现shell管道共功能。

31840

Unix域协议学习小结

// 创建父进程中用于读取数据管道 pipe(&pipe_out); // 创建父进程中用于写入数据管道 if ((pid = fork()) == 0)...[1]); // 关闭写管道 ... // 读取pipe_in[0]剩余数据 close...但是如果向一个套接字(sockfd1)写入,再从该套接字总读取,就会阻塞,只能够在另一个套接字(sockfd0)读取 读写可以位于同一个进程,也可以位于不同进程,如父子进程。...如果需要关闭子进程输入同时通知子进程数据已经发送完毕,而随后从子进程输出读取数据直到遇到EOF,对于之前pipe创建单向管道来说不会存在任务问题;但是使用socketpair创建双向管道时,...如果不关闭管道无法通知对端数据已经发送完毕,但是关闭了管道无法送终读取结果数据。

2K20

如何在父进程读取子(外部)进程标准输出和标准错误输出结果

最近接手一个小项目,要求使用谷歌aapt.exe获取apk软件包信息。依稀记得去年年中时,有个同事也问过我如何获取被调用进程输出结果,当时还研究了一番,只是没有做整理。...这个API参数非常多,我想我们工程对CreateProcess调用可能就关注于程序路径(lpApplicationName),或者命令行(lpCommandLine)。...它是我们启动子进程时,控制子进程启动方式参数。...我们之后将hWrite交给我们创建进程,让它去将信息写入管道。而我们父进程,则使用hRead去读取进程写入管道内容。...创建好管道后,我们将着手准备创建进程 // 组装命令 CString cstrNewDosCmd = L"Cmd.exe /C "; cstrNewDosCmd += cstrCmd

3.7K10

Linux匿名管道及实例

匿名管道,也称管道,是Linux下最常见进程间通信方式之一。匿名管道在系统没有实名,它只是进程一种资源,会随着进程结束而被系统清除。...父子进程管道读写 父进程利用管道向子进程发送消息,使用pipe函数建立管道,使用fork函数创建子进程,在父进程维护管道数据方向,并在父进程向子进程发送消息,parent_pipe_child.c...上述程序使用pipe加fork组合,实现父进程到子进程通信,程序在父进程关闭了管道读出端,并相应地在子进程关闭了管道输入端,从而实现数据从父进程流向子进程。...上述程序进程分别建立了两个子进程,在子进程1关闭了管道读出端,在子进程2关闭了管道输入端,并在父进程关闭了管道两端,从而构成了从子进程1到子进程2管道。...另外,程序进程创建第1个子进程时并没有关闭管道两端,而是在创建第2个子进程时才关闭管道,这是为了在创建第2个进程时,子进程可以继承存活管道

2.3K30

.NETC# 在 64 位进程读取 32 位进程重定向后注册表

如何在 64 位程序读取 32 位注册表路径 前面我们例子代码是这样: 1 var value = RegistryHive.LocalMachine.Read(@"SOFTWARE\Walterlv..."); 可以看到,相同代码,在 32 位和 64 位进程下得到结果是不同: 32 位进程在 32 位系统上,64 位进程在 64 位系统上,读取路径会是传入路径; 32 位进程在 64 位系统上...那么如何在 64 位进程读取 32 位注册表路径呢? 方法是在打开注册表项时候,传入 RegistryView.Registry32。...1 RegistryKey.OpenBaseKey(root, RegistryView.Registry32); Walterlv.Win32 可以在我 GitHub 仓库查看完整实现。...---- 参考资料 c# - Reading the registry and Wow6432Node key - Stack Overflow 本文会经常更新,请阅读原文: https://blog.walterlv.com

22830
领券