我需要在程序之间传递1个值。就我而言,我通过调用系统(“SimpleProgram”)在另一个程序中运行(非常简单)程序。
有没有办法传递SimpleProgram返回的1个值(整数)。 “返回123”和“退出(123)”都不起作用。
有没有优雅的方法来传递这样的价值? (我不想写和读取外部文件)
编辑:
语言是C ++,编程是在带有Angstrom发行版的BeagleBone上完成的。
retCode = system(“cd / home / martin / uart / temp / xml_parser&& ./xmldom”);
答案 0 :(得分:1)
请注意system(3)
的手册页有关返回代码的内容:
错误时返回的值为-1(例如fork(2)失败),以及 否则返回命令的状态。 后一种返回状态采用wait(2)中指定的格式。因此,命令的退出代码将 是WEXITSTATUS(状态)。
所以你几乎就在那里。如果你有一个简单的程序返回123,正如你所说:
int main(int argc, char **argv) {
return 123;
}
然后您可以使用system(3)
运行它,并使用WEXITSTATUS()
查看其返回代码:
#include <iostream>
using namespace std;
#include <stdlib.h>
int main(int argc, char **argv) {
int rc = system(argv[1]);
cout << WEXITSTATUS(rc) << '\n';
}
命名第一个程序return123
和第二个system
:
$ ./system ./return123
123
如果您不使用WEXITSTATUS()
而只是直接打印rc
,则会收到错误的值。
答案 1 :(得分:0)
执行此操作的标准方法是使用UNIX管道。
如果它只是一个黑客,你也可以只使用二进制返回值,但在任何一种情况下,你都必须使用execve()而不是system()。