如何将参数从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 脚本?