我目前正在使用Python和Socket库编写一个简单的文件服务器。我已经完成了大部分工作,现在我正在编写一种方法来将更新推送到服务器。这就是我期望它做的事情:
截至目前,我的程序可以执行1-3,但仍然无法运行新代码并退出程序。由于服务器程序长约100行,here's a link to the pastebin with the code。如果您也想使用上传器here it is。
查看我的代码,问题出在我的更新代码中:
class updServer(Thread):
def __init__(self,s):
Thread.__init__(self)
self.s = s
def run(self):
os.remove(os.path.realpath(__file__))
fn = self.s.recv(2048)
with open(fn, 'wb') as f:
still_data = True
while still_data:
data = self.s.recv(2048)
if not data:
still_data = False
if data == '':
still_data = False
f.write(data)
f.flush()
os.fsync(f.fileno())
f.close()
global name_of_file
name_of_file = fn
return None
或者我试图在其下运行新程序的方式:
elif file_name_sent == b'to update server':
new_t = updServer(conn)
threads.append(new_t)
new_t.start()
global name_of_file
execfile(name_of_file)
os._exit(0)
注意:我也尝试过使用os.command和subprocess.call,我也知道python在我的PATH上。如果您需要,请上传者的说明为here。