python子进程中不能input的问题
在python中,子进程是不能使用input操作的,但是有时候需要在子进程中输入数据,下面将介绍一种方法,解决这个问题
fn=sys.stdin.fileno()
fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。
在主进程中使用该代码,返回文件的描述符
sys.stdin=os.fdopen(fn)
在子进程中打开标椎的输入,然后就可以执行input操作了
其他输入:
sys.stdin.fileno()
0
sys.stdout.fileno()
1
sys.stderr.fileno()
2
分别对应标准输入、标准输出、标椎错误
案例:TCP的子进程实现多线程的双向通信
import socket
import os,sys
from multiprocessing import Process
from threading import Thread
def close(cliensocket,clientaddr):
cliensocket.close()
def runclient(clientsocket,clientaddr):
while True:
try:
data = clientsocket.recv(1024)
if data.decode("gbk") =='':
close(clientsocket,clientaddr)
break
print(d