Subprocess:уходит в бесконечный простой,если команда не даёт вывода

При выполнении программы в новом процессе, subprocess ждёт до конца её выполнения и выдаёт output. Но когда я пытаюсь запустить команду, которая не даёт вывода, допустим del, программа виснет и мне приходится перезаходить.

Частично решил проблему, используя метод Popen.communicate(), но он выдаёт кортеж, который не удаётся конвертировать в строку.

В этом случае кидает исключение:

TypeError: sequence item 1: expected str instance, NoneType found

'Код'

import subprocess
import time
sock = socket.socket()
HOST = '0.0.0.0'
PORT = 6000

sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((HOST, PORT))
print('Socket is binded on address {}'.format(HOST))
sock.listen(5)
print('Socket is listening on port {}'.format(PORT))

while True:
    client, address = sock.accept()
    print('Got a connection from {}'.format(address))
    if client:
        while True:
            data = client.recv(10024)
            if data == b'':
                time.sleep(5)
                break
            else:
                try:
                    print(data)
                    datalist = data.decode('utf-8').split(',')
                    proc = subprocess.Popen(datalist[0], cwd=datalist[1], shell=True, stdout=subprocess.PIPE, text=True, universal_newlines=True, stdin=subprocess.PIPE)
                    output = proc.communicate()
                    string = ''.join(output)
                    client.send(output.encode('utf-8'))
                except PermissionError:
                    print('Access denied for {}'.format(data.decode('utf-8')))
                    client.close()
                    break
                else:
                    continue

Ответы (0 шт):