使用Python来处理C ++程序的STDIN和STDOUT

时间:2016-04-20 18:03:56

标签: python c++ popen

我有程序A,它是一个命令行应用程序,可以随机打印出特定的状态消息。它还需要输入和运行命令。我正在尝试做的是使用Python来创建该程序的包装器,以便当输出(stdout)满足特定条件时,运行python函数。我还有一个函数,它将基于Slack向程序A发送输入 - 我正在使用slackhq / python-slackclient rtm_connect()来监听一个通道。但是,当我运行我的处理程序时,STDIN / STDOUT不会出现(STDOUT因为指南而被发送到PIPE),当我手动触发符合第一个python函数条件的事件时,没有任何反应。没有打印声明,没有。

Pexpect一直打pexpect.TIMEOUT: Timeout exceeded.

a = Popen(["/proj/a"], stdout=PIPE)

def main():
    sc.rtm_connect() #The RTM connect
    a_to_slack(test_message) #Post message when connected

    if a:
        print("A was opened previously")
        listen_to_a()
    else:
        world = Popen(["/proj/a"], stdout=PIPE)
        listen_to_a()

def listen_to_a():
    while True:
        data, error = a.stdout.read()[0] #From duplicate, to get STDOUT
        print(data) #Never prints
        a_to_slack(data) #Nothing..
        print sc.rtm_read() #Doesn't print here either
        time.sleep(1)

0 个答案:

没有答案