从java进程附加到外部c ++进程导致问题

时间:2012-07-13 13:28:33

标签: java c++

我试图使用java.lang.process附加C ++可执行文件。构建exec的代码如下:

int main(int, char**){

std::cout << "Starting Up. . . . . " << std::endl;
std::string command;

while (command != "exit")
{
    std::cin >> command;
}

return 0;
}

在调试时,我发现在创建进程的过程中,进程暂停std :: cin并期望输入值,但是在下一次迭代时,它会自动获取前一个'command'std :: cin值并继续迭代'while'循环而不将控制权交还给java进程。为什么c ++可执行文件在每次迭代时都会在std :: cin处停止?我正在使用Process.getOutputStream()从java传递值。如果有任何描述问题,请告诉我。谢谢,Tor。

1 个答案:

答案 0 :(得分:1)

最有可能的是,没有有效的输入或某种类型的EOF被模拟。您应该检查输入是否有错误:

while ( std::cin && command != "exit" )
{
    std::cin >> command;
}