小编Dav*_*ton的帖子

如何判断c ++程序何时等待输入?

我试图通过python控制一个简单的c ++程序.该程序通过提示用户输入来工作.提示不一定是endl终止.我想知道的是,如果有一种方法可以告诉python c ++程序不再生成输出并且已切换到请求输入.这是一个简单的例子:

C++

#include <iostream>

using namespace std;

int main()
{
    int x;
    cout << "Enter a number ";
    cin >> x;
    cout << x << " squared = " << x * x << endl;
}
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

#! /usr/bin/python
import subprocess, sys
dproc = subprocess.Popen('./y', stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while (True) :
    dout = dproc.stdout.read(1)
    sys.stdout.write(dout)
    dproc.stdin.write("22\n")
Run Code Online (Sandbox Code Playgroud)

这种工作但写入dproc.stdin太多了.我正在寻找的是一种从dproc.stdout读取所有内容直到程序准备好输入然后写入dproc.stdout的方法.

如果可能的话,我想这样做,无需修改c ++代码.(但是,我试过在c ++方面玩缓冲,但似乎没有帮助)

感谢您的回复.

c++ python cout cin

3
推荐指数
1
解决办法
613
查看次数

如何让垂直条在 docker 中运行的 tmux 中正确显示?

我正在尝试在 docker 内部使用 tmux。在大多数情况下,它工作正常,但如果我将主窗口分成左右窗口,则 tmux 应该在两个窗口之间绘制的栏仅部分绘制。还有一些其他窗口渲染问题,但这是我注意到的第一个也是最容易描述的问题。

这是我用来构建测试映像的 Dockerfile:

FROM ubuntu:wily

RUN apt-get update && apt-get install -y tmux 
Run Code Online (Sandbox Code Playgroud)

这是我用来通过 tmux 启动 docker 的命令:

sudo docker run -it --entrypoint tmux imageName
Run Code Online (Sandbox Code Playgroud)

我的主机正在运行 Ubuntu 15.04,并且我正在从带有 TERM=xterm 的终端运行 docker。在 docker 容器内,TERM=screen

如果我启动 sshd 而不是 tmux,那么我可以使用 ssh 登录正在运行的容器,并在 ssh 会话中使用 tmux,不会出现任何问题。这就是我到目前为止一直在做的事情,但看起来不必要的混乱。

我该怎么做才能让窗口正确绘制。

ssh tmux docker

1
推荐指数
1
解决办法
1660
查看次数

标签 统计

c++ ×1

cin ×1

cout ×1

docker ×1

python ×1

ssh ×1

tmux ×1