gpt4 book ai didi

c++ - 程序的本地执行不需要回车。远程执行呢?

转载 作者:行者123 更新时间:2023-11-30 05:06:24 25 4
gpt4 key购买 nike

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

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::endl 做了一个 os.flush()

其次,我假设您正在使用像 here 这样的 powershell ,所以是一个普遍的问题。(如果不是我会删除这个帖子)

解决方法是使用 cmdstdin 上传输一些数据,它会在执行后正确返回。

关于c++ - 程序的本地执行不需要回车。远程执行呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47928474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com