【问题标题】:Executable shims on Windows (or "where's my exec()"?)Windows 上的可执行垫片(或“我的 exec() 在哪里”?)
【发布时间】: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 上融合了 forkexec 对,但我只想要后者的功能。我知道我可以创建一个子进程并将 stdin、stdout 和 stderr 转发给子进程,但是我还必须处理 Windows 的任何等效信号,这对于像我这样的新手来说似乎充满了危险。

【问题讨论】:

标签: windows exec posix shim


【解决方案1】:

只是我的运气。我已经在谷歌上搜索了好几个星期都没有用,一旦我发布这个问题,我就偶然发现了似乎可以解决问题的方法:

CreateProcess usage for executable wrapper for Windows?

这足以处理任何“信号”之类的吗?我应该注意的任何边缘情况?我想我需要等待孩子在自行终止并通过退出代码之前终止 - 还有什么?

【讨论】:

    猜你喜欢
    • 2020-11-10
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 2013-05-26
    • 2017-02-26
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多