C++:如何在不将命令传递给 shell 的情况下执行文件?

C++: How to execute a file without passing a command to the shell?

本文关键字:shell 情况下 执行 文件 命令 C++      更新时间:2023-10-16

所以我在C++中发现我可以使用popen((方法来运行命令并打开一个流,以便我可以读取它的输入和输出。 这适用于我使用它的目的,但它让我感到困扰的是,它将命令传递给 shell 以执行此操作。

我想知道的是是否可以在给定文件位置的情况下执行可执行文件。然后,我需要能够读取程序的输出。我可以在不将命令传递给外壳的情况下执行此操作吗?

我只是对不同外壳之间的兼容性有一些担忧。如果我在设计程序时假设 BASH 环境,那么如果它使用 Bourne Shell 或 CSH 运行,它最终会出现故障,还是我只是想多了?

执行任何程序都是特定于操作系统的(几乎根据操作系统的定义(。阅读可免费下载的操作系统:三个简单的部分了解更多信息。

你只能关心一个特定的操作系统,比如Linux(或操作系统类(。然后我建议关心POSIX系统,并使用像posix_spawn或fork这样的原语,然后是一些exec等。高级Linux编程给出了很好的解释,并且可以免费下载。

或者你可以使用一些框架库,如POCO或Qt等......两者都提供了以某种操作系统"中立"方式运行程序的抽象(对于它们支持的少数常见操作系统 - Linux,Windows,MacOSX(。