程序的本地执行不需要回车。远程执行吗?

时间:2017-12-21 15:54:25

标签: c++ psexec

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

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运行该程序,而无需回车继续。

1 个答案:

答案 0 :(得分:1)

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

其次,我将假设您正在使用类似here的powershell,因此这是一个常见问题。 (如果不是,我将删除此帖子)

解决方法是使用stdincmd上管理一些数据,并在执行后返回属性。