我正在使用boost.process
一些给定的输入来运行外部进程。用户可以指定该外部进程。所以大多数时候用户指定一个shell脚本或批处理脚本。
我只是在做boost::process::launch(_script, arguments, context);
,只要它们可以按预期执行(+x),它既可以用于真正的可执行文件,也可以用于 shell 脚本。但是当我在 Windows 中运行它时。它不起作用如果我传入一个批处理文件,_script
但是如果我指定一个真正的可执行文件,它就会起作用。
这让我觉得在 Windows 中批处理脚本根本不是可执行文件?它们只是通过 cmd.exe 解释的!这是真的 ?
我可以启动cmd.exe
并指定/c _script argv
为命令行参数。但这不会是跨平台的。
而且我不想system()
打电话,因为我无法完全控制创建的进程?