程序的本地执行不会重新返回运输返回.远程执行确实



我有一个简单的可执行文件,该可执行文件首先检查命令行参数,一些简单的初始化,然后是状态消息。

if (argc != 2)
{
    std::cout << "Must provide IP address as argument.n";
}
Comms_SSL comms;
std::string msg;
std::cout << "Version Number: " << SOME_VERSION_NUM << std::endl;

当我直接从机器上运行可执行文件时,它可以按照我的预期工作;它打印出版本号并沿程序继续。

当我通过PSEXEC远程运行此可执行文件时,程序的执行将在将工具版本打印到控制台之后等待运输返回继续该程序。源代码中的任何一种提示都没有任何形式的输入。

奇怪的是,如果我更改打印版本号的行,以' n'结尾:

std::cout << "Version Number: " << SOME_VERSION_NUM << 'n';

当我通过PSEXEC再次运行此可执行文件时,程序的执行等待运输返回在将工具版本打印到控制台之前继续程序。

我失去了这里发生的事情。我希望能够通过PSEXEC运行此程序,而无需返回马车才能继续。

首先,使用'n'代替std::endl,输出将是相同的,但可能不会实时出现。这是因为std::endlos.flush()

第二,我会像这里一样使用PowerShell,这是一个常见的问题。(如果没有,我将删除这篇文章)

解决方法是用cmdstdin上输送一些数据,并在执行后返回属性。

最新更新