可执行文件可以返回另一个可执行文件?

时间:2017-05-31 19:47:42

标签: java c++ return

在C ++中,通常使用gnome-terminal -x bash -c "command" afaik 我不知道的是,可以将返回的int main(int argc, char* argv [])提供给另一个.exe或.jar吗?例如,如果我在C ++中获得比在Java中更容易做的事情,我希望将结果分配给int或java中的其他任何内容?
如果不是"多语言",这至少可以从一个C ++ exe到另一个吗?

2 个答案:

答案 0 :(得分:1)

是。如果一个程序启动另一个程序,它可以在终止时收集该子程序的退出代码。

如果需要,您还可以在两个进程之间进行次通信 - 比如在标准输入和标准输出之间设置管道,这样父和子可以通过读/写{{1}来发送任意消息} / cin或者您可以在进程之间使用套接字,UNIX域套接字,TCP套接字,任何内容或共享内存。 查找IPC(进程间通信)。

顺便说一下;每个应用程序编写的语言无关紧要。重要的是他们使用相同的IPC机制。

答案 1 :(得分:0)

main返回的值成为进程的退出代码。如果您启动子流程,那么您通常可以通过某种方式访问​​该值(请参阅the Process docs for Java),但它通常不用于通信结果。按照惯例,退出代码用于报告成功或失败:0表示成功,非零退出代码用于表示各种错误情况。

从一个进程到另一个进程进行通信有多种方法。最简单的通常是将数据写入子进程的标准输入流,并从其标准输出和标准错误流接收数据。有关如何在Java中执行此操作,请参阅the ProcessBuilder docs。进程也可以使用其他方法进行通信,例如套接字或共享内存,但这些是更大的主题。