2015-06-04 2 views
2

Я пытаюсь создать окна гнома-терминала, после чего хочу что-то написать в окне терминала (эхо), как экран буферизации, в цикле while.Как сделать команду gnome-terminal действовать как объект в python

import os 
 

 
x = os.system("gnome-terminal -e") 
 

 
while True: 
 
    x.write("echo % s "%(buffering)) 
 
    if progress == 0: 
 
     break

Итак, я должен, прежде чем открыть гном-терминал окно в то время как цикл, потому что, если я не гном терминал открывает и закрываются в каждом цикле.

ответ

0

Вы можете использовать именованный канал:

import os,time 

def client(): 
    try: 
     os.mkfifo("named_pipe") 
    except OSError as e: 
     print(e.message) 
    named_pipe = os.open("named_pipe", os.O_WRONLY) 
    while True: 
     time.sleep(1) 
     os.write(named_pipe, 'Time {}\n'.format(time.asctime())) 


def server(): 
    from subprocess import check_call 
check_call(['gnome-terminal', '-e', "python script.py"]) 


pid = os.fork() 
foo() if pid != 0 else bar() 

В script.py:

import os 
with open('named_pipe') as f: 
    for line in iter(f.readline, ""): 
     print(line.rstrip()) 
    os.unlink("named_pipe") 

Вы также можете использовать домен Сокет или TCP.

Смежные вопросы