如何将参数从c ++传递到linux shell

Posted

技术标签:

【中文标题】如何将参数从c ++传递到linux shell【英文标题】:how to pass parameter from c++ to linux shell 【发布时间】:2016-07-05 18:27:50 【问题描述】:

我的问题可能很简单,但我在论坛中找不到我想要的。

我编写了 c++ 程序,最近学习了一般规则。另外,我通常在linux环境下编程,使用g++(c++)编译器。

我想要一些东西,当一个 c++ 程序正在运行时,它将一些参数传递给 linux 命令窗口并在那里执行一些命令。在完成所有这些工作之后,它会使用一些参数自行转动。

特别是,c++程序获取非常具体的数据(例如整数传感器数据)并将其传递给命令行,也可能传递给shell脚本,然后获取shell脚本的结果(例如错误代码)像 int 0 或 1)。我想编写与shell交互良好的程序。

更具体地说,如果您将 a=3 写入 linux 命令行,将会有一个名为 a 的本地参数,其值为 3。我想从 c++ 程序中传递这个 3 值。我希望如果有这样的功能:

int value=3;            
system("a=%d",value); //(notice:this is not a real code!)

我希望我能解释我的请求。如果我说错了,我很抱歉,但正如我所说,我是一个新的 C++ 程序员

注意: 我使用了 sys/syscall.h 和 stdlib.h 库的一些功能。

【问题讨论】:

你在找setenv吗? 在大多数情况下,system() 调用应该收到一个字符串,就像您从命令行提示符输入它一样,请随意使用std::string 类构造这样的字符串,并使用@987654325 传递结果@函数到system() 如果您使用 C++ 编程,为什么要使用 C 语言标签?例如,C++ 语言有std::string,而 C 没有。 【参考方案1】:

在 C 中

int value = 3;
char command[255];
sprintf (command, "a = %d\n", value);
int result = system (command);

在 C++ 中

int value = 3;
std::stringstream ss ("a = "); //include <sstream>!
ss << value;
int result = system (ss.str ().c_str ());

【讨论】:

可以通过展示如何捕获进程退出代码来改进答案(它只是system的返回值)。 谢谢先生,您的代码运行良好,我通过它学习了一门新课程。

以上是关于如何将参数从c ++传递到linux shell的主要内容,如果未能解决你的问题,请参考以下文章

试图了解如何将参数从 gradle 传递到我的 shell 脚本?

如何使用 C++/CLI Wrapper 将变量参数从托管传递到非托管?

如何将数组从 C 传递到嵌入式 python 脚本

如何将变量从 awk 传递到 shell 命令?

将参数从 C 传递到 Embedded Mono

如何将从文件上传小部件上传的假脱机文件传递到 C FILE *f 指针