我正在 Windows 上运行一个非常简单的 Jenkins 项目,它只调用一个可执行文件。可执行文件只是从控制台读取用户输入并将其打印回控制台。它有以下代码:
#include <iostream>
int main()
{
int selection = 0;
while (true)
{
std::cin >> selection;
std::cout << "selection was: " << selection << '\n';
if (std::cin.fail())
{
std::cin.clear();
std::cin.ignore();
}
}
return 0;
}
如果我在 Jenkins 的外部运行这个应用程序,它只会在我手动将输入输入到控制台(如预期)时完成循环迭代。
1
selection was: 1
2
selection was: 2
3
selection was: 3
4
selection was: 4
5
selection was: 5
但是,如果我在内部 Jenkins 中运行它,而不手动提供输入,那么 exe 会因无效输入而不间断/非常迅速地被发送垃圾邮件。
selection was: 0
selection was: 0
selection was: 0
selection was: 0
selection was: 0
selection was: 0
selection was: 0
selection was: 0
selection was: 0
selection was: 0
....repeated many times
std::cin
调用应该阻塞,直到收到输入。有谁知道输入的来源是什么,或者如何阻止它?我的假设是它一定是 Jenkins 中的东西,因为当然.. 在 Jenkins 之外运行时不存在这个问题。
谢谢!