在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python 如何重定向到另一個終端?

python 如何重定向到另一個終端?

我覺得沒人會
就開兩個python終端: 終端1,終端2
在終端1:

print('send info',file=???)

終端2顯示:

send info

file默認為sys.stdout,怎么重定向到另一個終端的sys.stdout?

其實我想繞個遠路,用tcp連接兩個終端的,但是懶得寫啊,就來問問各位大佬有沒有什么簡單的辦法實現(xiàn)?
如果能實現(xiàn)重定向標準輸入sys.stdin就更好了

回答
編輯回答
薄荷糖

在linux系統(tǒng)下:
每一個進程都會有它自己的sys.stdout,除非進程自己把它關(guān)閉了。
在/proc目錄下面系統(tǒng)會為每一個進程創(chuàng)建一個文件夾,文件夾名字就是進程號,該文件夾下面會放一些進程的相關(guān)信息,比如fd目錄下面會放進程打開的文件描述符,對文件描述符1寫入數(shù)據(jù)就可以了。

2018年3月3日 23:58
編輯回答
涼心人

并不是沒人會,不要輕易斷言。
一、你可以試下linux的管道,pipe,這是專門用來linux進程間通信的。其實你也完全可以自己寫一個文件進行讀寫,效果一樣。
terminal1.py

 import os, time, sys
    pipe_name = 'pipe_test'
    def parent( ):
        pipein = open(pipe_name, 'r')
        while True:
            line = pipein.readline()[:-1]
            print 'Parent %d got "%s" at %s' % (os.getpid(), line, time.time( ))
    if not os.path.exists(pipe_name):
        os.mkfifo(pipe_name)
    parent()

terminal2.py

import os, time, sys
pipe_name = 'pipe_test'

def child( ):
    pipeout = os.open(pipe_name, os.O_WRONLY)
    counter = 0
    while True:
        time.sleep(1)
        os.write(pipeout, 'Number %03d\n' % counter)
        counter = (counter+1) % 5
if not os.path.exists(pipe_name):
    os.mkfifo(pipe_name)
child()

二、socket通信也行,windows和linux通用。代碼不復雜吧,網(wǎng)上都是現(xiàn)成的客戶端,服務端。
三、試想一下,如果你是linux系統(tǒng)開發(fā)的人員,對于定向另一個終端這種簡單的問題,他會搞不定?所以你說的沒人會有點武斷。

2017年7月28日 04:25
編輯回答
無標題

搜索“進程間通信”

2017年12月17日 05:04
編輯回答
別逞強

理論上命名管道可以實現(xiàn)你的需求,這個Linux和windows多有對應的實現(xiàn)方式

2017年10月31日 17:03