允许其他线程从cmd modu使用cmdloop打印到标准输出

2024-09-28 13:16:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试构建一个使用cmd模块的应用程序。当我运行我的程序时,我希望它进入cmdloop,并且仍然能够接收来自其他东西的打印。最终,我将有线程打印插座。但我做了一些游戏,在CMD循环中无法打印任何内容。它只是位于提示符“>;”处。但是我仍然希望它打印出它接收到的东西,或者如果我调用了一个不在这个CLI类中的函数,则打印来自该函数的响应。你知道吗

import cmd
import string, sys

class CLI(cmd.Cmd):

    def __init__(self):
        cmd.Cmd.__init__(self)
        self.prompt = '> '

    def do_hello1(self, arg):
        print "hello1 again", arg, "!"

    def help_hello1(self):
        print "syntax: hello1 [message]",
        print "-- prints a hello1 message"

    def do_quit(self, arg):
        sys.exit(1)

    def help_quit(self):
        print "syntax: quit",
        print "-- terminates the application"

    # shortcuts
    do_q = do_quit


sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
HOST = ''   
PORT = 5555


try:
    sock.bind((HOST, PORT))
except socket.error as msg:
    print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
    sys.exit()

print 'Socket bind complete'

sock.listen(10)

conn, addr = sock.accept()

cli = CLI()
cli.cmdloop()

while True:
    data = conn.recv(1024)
    print data

Tags: 函数selfcmdclidefsysargmsg

热门问题