[英]Send commands from command line to a running Python script in Unix
我想构建一个可以从其他脚本运行时可以控制的脚本。 例如,我想这样运行我的脚本:
~: Server &
并能够运行以下功能之一:
~: client func1
在搜索后,我发现信号模块具有我想要的东西,但是它的信号是预定义的,因此无法发送自己的信号。
即使使用网络框架实现客户端/服务器实现,但对于我希望脚本具有的功能来说,我认为这太多了。
谢谢你们。
如果您只是尝试向服务器单向发送命令,那么使用Python的Sockets会 比您想象的要容易 。 在不执行错误处理和不多次调用recv
以确保消息完整的意义上,这些代码示例当然是准系统。 这只是让您了解处理命令需要几行代码。
这是一个服务器程序,它仅接收消息并打印到stdout
。 请注意,我们使用线程,以便服务器可以一次侦听多个客户端。
import socket
from threading import Thread
MAX_LENGTH = 4096
def handle(clientsocket):
while 1:
buf = clientsocket.recv(MAX_LENGTH)
if buf == '': return #client terminated connection
print buf
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
PORT = 10000
HOST = '127.0.0.1'
serversocket.bind((HOST, PORT))
serversocket.listen(10)
while 1:
#accept connections from outside
(clientsocket, address) = serversocket.accept()
ct = Thread(target=handle, args=(clientsocket,))
ct.start()
这是一个向其发送命令的客户端程序。
import socket
import sys
HOST = '127.0.0.1'
PORT = 10000
s = socket.socket()
s.connect((HOST, PORT))
while 1:
msg = raw_input("Command To Send: ")
if msg == "close":
s.close()
sys.exit(0)
s.send(msg)
因此,您需要与正在运行的进程进行对话吗? Unix域套接字的想法呢?
在您的服务器中,您可以在UNIX文件系统的路径上建立一个套接字,然后与客户端中的该套接字进行通信,如我在Google搜索的链接中所述:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.