StartProcess
StartProcess["executable"]
执行一个外部程序,产生一个 ProcessObject 来代表产生的子过程.
StartProcess[{"executable",arg1,arg2,…}]
执行一个外部程序,将指定自变量 argi 传递给它.
更多信息
- 如果它所指定的程序可以开始, StartProcess 返回一个 ProcessObject;否则返回 $Failed.
- 当其正在执行或作为“后台任务”执行而不阻碍 Wolfram 引擎时, StartProcess 可用于与程序交互作用.
- StartProcess 即刻返回并且不会等待已开始的程序的完成. 用 RunProcess 来等待程序完成.
- 在 StartProcess[{"executable",arg1,arg2,…}] 中,用 ToString 将 argi 转换为字符串.
- Wolfram 引擎可与由带有如 WriteLine、 WriteString、 BinaryWrite、 ReadLine、 ReadString 和 BinaryRead 这样的函数的 ProcessObject 所表示的子程序沟通.
- 标准输入、输出和误差流可以用 ProcessConnection 来表示.
- 与子程序相关的信息可以通过 ProcessStatus 和 ProcessInformation 来询问.
- 如下选项可以给出:
-
ProcessDirectory Inherited 初始工作目录 ProcessEnvironment Inherited 用于给出子程序的环境变量 - 默认情况下,子程序将从 Wolfram 引擎中继承其程序目录和环境变量.
- 如果 Wolfram 引擎被终止,子程序将被迫停止.
- 如果自变量 argi 中的任意一个是 "name"->value 形式的,它们将被转化成 "--name=value" 的形式. 如果 name 是一个单字符,只使用一个破折号.
范例
打开所有单元关闭所有单元可能存在的问题 (4)
为一个程序及其自变量调用 StartProcess 的正确方法是使用一个列表:
在命令和自变量一个单一字符串中的情况下,不可以调用 StartProcess:
同样的,程序自变量作为 StartProcess 的自变量的情况下不可以调用 StartProcess:
通过外壳展开如 ~ 和 * 这样的特殊符号不被转化,因为 StartProcess 会跳过外壳:
如 dir 和 echo 的外壳命令不能在 Windows 上被直接调用,应为它们不是二进制的(但是,它们可以作用于 Unix 系统上,因为它们是 Unix 二进制的):
文本
Wolfram Research (2014),StartProcess,Wolfram 语言函数,https://reference.wolfram.com/language/ref/StartProcess.html.
CMS
Wolfram 语言. 2014. "StartProcess." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/StartProcess.html.
APA
Wolfram 语言. (2014). StartProcess. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/StartProcess.html 年