【发布时间】:2017-08-19 14:43:16
【问题描述】:
我正在编写一些我想在 Windows 上使用的工具。它们通常是“命令垫片”,即它们只做一些工作,然后使用 Unix 中的 exec 系列中的一个函数执行另一个程序。
例如设置一组环境变量,例如shush。它可以像这样使用:
export KMS_ENCRYPTED_MOO=<base64str...>
shush exec -- env
shush 程序迭代环境变量,使用 AWS KMS 解密具有前缀 KMS_ENCRYPTED_ 的变量,并在继续执行 env 程序之前使用解密的值设置新的环境变量(无前缀)。
我如何在 Windows 上做到这一点? 我的理解是 Windows 的 CreateProcess 函数相当于在 *nix 上融合了 fork 和 exec 对,但我只想要后者的功能。我知道我可以创建一个子进程并将 stdin、stdout 和 stderr 转发给子进程,但是我还必须处理 Windows 的任何等效信号,这对于像我这样的新手来说似乎充满了危险。
【问题讨论】:
-
Windows 没有等效的信号。创建子进程是正确的(实际上也是唯一的)选项。