⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpd.py

📁 mpi并行计算的c++代码 可用vc或gcc编译通过 可以用来搭建并行计算试验环境
💻 PY
📖 第 1 页 / 共 5 页
字号:
            if self.exiting:                break    def usage(self):        print __doc__        print "This version of mpd is", mpd_version()        sys.exit(-1)    def cleanup(self):        try:            mpd_print(0, "CLEANING UP" )            if syslog_module_available:                syslog.syslog(syslog.LOG_INFO,"mpd ending mpdid=%s (inside cleanup)" % \                              (self.myId) )                syslog.closelog()            if self.conListenSock:    # only del if I created                os.unlink(self.conListenSock.conFilename)        except:            pass    def get_parms_from_cmdline(self):        argidx = 1        while argidx < len(sys.argv):            if sys.argv[argidx] == '--help':                self.usage()                argidx += 1            elif sys.argv[argidx] == '-h':                if len(sys.argv) < 3:                    self.usage()                self.parmdb[('cmdline','MPD_ENTRY_IFHN')] = sys.argv[argidx+1]                argidx += 2            elif sys.argv[argidx].startswith('--host'):                try:                    entryHost = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --host option'                    self.usage()                self.parmdb[('cmdline','MPD_ENTRY_IFHN')] = entryHost                argidx += 1            elif sys.argv[argidx] == '-p':                if argidx >= (len(sys.argv)-1):                    print 'missing arg for -p'                    sys.exit(-1)                if not sys.argv[argidx+1].isdigit():                    print 'invalid port %s ; must be numeric' % (sys.argv[argidx+1])                    sys.exit(-1)                self.parmdb[('cmdline','MPD_ENTRY_PORT')] = int(sys.argv[argidx+1])                argidx += 2            elif sys.argv[argidx].startswith('--port'):                try:                    entryPort = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --port option'                    self.usage()                if not entryPort.isdigit():                    print 'invalid port %s ; must be numeric' % (entryPort)                    sys.exit(-1)                self.parmdb[('cmdline','MPD_ENTRY_PORT')] = int(entryPort)                argidx += 1            elif sys.argv[argidx].startswith('--ncpus'):                try:                    NCPUs = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --ncpus option'                    self.usage()                if not NCPUs.isdigit():                    print 'invalid ncpus %s ; must be numeric' % (NCPUs)                    sys.exit(-1)                self.parmdb[('cmdline','MPD_NCPUS')] = int(NCPUs)                argidx += 1            elif sys.argv[argidx].startswith('--pid'):                try:                    splitPid = sys.argv[argidx].split('=')                except:                    print 'failed to parse --pid option'                    self.usage()                if len(splitPid) == 1  or  not splitPid[1]:                    pidFilename = '/var/run/mpd.pid'                else:                    pidFilename = splitPid[1]                self.parmdb[('cmdline','MPD_PID_FILENAME')] = pidFilename                argidx += 1            elif sys.argv[argidx].startswith('--ifhn'):                try:                    ifhn = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --ifhn option'                    self.usage()                try:                    hostinfo = socket.gethostbyname_ex(ifhn)                    ifhn = hostinfo[2][0]                except:                    print 'mpd failed: gethostbyname_ex failed for %s' % (ifhn)                    sys.exit(-1)                self.parmdb[('cmdline','MPD_MY_IFHN')] = ifhn                argidx += 1            elif sys.argv[argidx] == '-l':                if argidx >= (len(sys.argv)-1):                    print 'missing arg for -l'                    sys.exit(-1)                if not sys.argv[argidx+1].isdigit():                    print 'invalid listenport %s ; must be numeric' % (sys.argv[argidx+1])                    sys.exit(-1)                self.parmdb[('cmdline','MPD_LISTEN_PORT')] = int(sys.argv[argidx+1])                argidx += 2            elif sys.argv[argidx].startswith('--listenport'):                try:                    myListenPort = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --listenport option'                    self.usage()                if not myListenPort.isdigit():                    print 'invalid listenport %s ; must be numeric' % (myListenPort)                    sys.exit(-1)                self.parmdb[('cmdline','MPD_LISTEN_PORT')] = int(myListenPort)                argidx += 1            elif sys.argv[argidx] == '-hp':                if argidx >= (len(sys.argv)-1):                    print 'missing arg for -hp'                    sys.exit(-1)                try:                    (entryIfhn,entryPort) = sys.argv[argidx+1].split('_')                except:                    print 'invalid entry host: %s' % (sys.argv[argidx+1])                    sys.exit(-1)                if not entryPort.isdigit():                    print 'invalid port %s ; must be numeric' % (sys.argv[argidx+1])                    sys.exit(-1)                self.parmdb[('cmdline','MPD_ENTRY_IFHN')] = entryIfhn                self.parmdb[('cmdline','MPD_ENTRY_PORT')] = int(entryPort)                argidx += 2            elif sys.argv[argidx] == '-t'  or  sys.argv[argidx] == '--trace':                self.parmdb[('cmdline','MPD_TRACE_FLAG')] = 1                argidx += 1            elif sys.argv[argidx] == '-n'  or  sys.argv[argidx] == '--noconsole':                self.parmdb[('cmdline','MPD_CONSOLE_FLAG')] = 0                argidx += 1            elif sys.argv[argidx] == '-e'  or  sys.argv[argidx] == '--echo':                self.parmdb[('cmdline','MPD_ECHO_PORT_FLAG')] = 1                 argidx += 1            elif sys.argv[argidx] == '-d'  or  sys.argv[argidx] == '--daemon':                self.parmdb[('cmdline','MPD_DAEMON_FLAG')] = 1                 argidx += 1            elif sys.argv[argidx] == '-b'  or  sys.argv[argidx] == '--bulletproof':                self.parmdb[('cmdline','MPD_BULLETPROOF_FLAG')] = 1                 argidx += 1            else:                print 'unrecognized arg: %s' % (sys.argv[argidx])                sys.exit(-1)        if (self.parmdb['MPD_ENTRY_IFHN']  and  not self.parmdb['MPD_ENTRY_PORT']) \        or (self.parmdb['MPD_ENTRY_PORT']  and  not self.parmdb['MPD_ENTRY_IFHN']):            print 'host and port must be specified together'            sys.exit(-1)    def handle_console_connection(self,sock):        if not self.conSock:            (self.conSock,newConnAddr) = sock.accept()            if hasattr(socket,'AF_UNIX')  and  sock.family == socket.AF_UNIX:                line = self.conSock.recv_char_msg().rstrip()                if not line:  # caller went away (perhaps another mpd seeing if I am here)                    self.streamHandler.del_handler(self.conSock)                    self.conSock.close()                    self.conSock = 0                    return                errorMsg = ''                try:                    (kv1,kv2) = line.split(' ',1)  # 'realusername=xxx secretword=yyy'                except:                    errorMsg = 'failed to split this msg on " ": %s' % line                try:                    (k1,self.conSock.realUsername) = kv1.split('=',1)                except:                    errorMsg = 'failed to split first kv pair on "=": %s' % line                try:                    (k2,secretword) = kv2.split('=',1)                except:                    errorMsg = 'failed to split second kv pair on "=": %s' % line                if k1 != 'realusername':                    errorMsg = 'first key is not realusername'                if k2 != 'secretword':                    errorMsg = 'second key is not secretword'                if os.getuid() == 0  and  secretword != self.parmdb['MPD_SECRETWORD']:                    errorMsg = 'invalid secretword to root mpd'                if errorMsg:                    try:                        self.conSock.send_dict_msg({'error_msg': errorMsg})                    except:                        pass                    self.streamHandler.del_handler(self.conSock)                    self.conSock.close()                    self.conSock = 0                    return                self.conSock.beingChallenged = 0            else:                msg = self.conSock.recv_dict_msg()                if not msg:    # caller went away (perhaps another mpd seeing if I am here)                    self.streamHandler.del_handler(self.conSock)                    self.conSock.close()                    self.conSock = 0                    return                if not msg.has_key('cmd')  or  msg['cmd'] != 'con_init':                    mpd_print(1, 'console sent bad msg :%s:' % (msg) )                    try:  # try to let console know                        self.conSock.send_dict_msg({'cmd':'invalid_msg_received_from_you'})                    except:                        pass                    self.streamHandler.del_handler(self.conSock)                    self.conSock.close()                    self.conSock = 0                    return                self.streamHandler.set_handler(self.conSock,self.handle_console_input)                self.conSock.beingChallenged = 1                self.conSock.name = 'console'                randNum = randrange(1,10000)                randVal = sock.secretword + str(randNum)                self.conSock.expectedResponse = md5new(randVal).digest()                self.conSock.send_dict_msg({'cmd' : 'con_challenge', 'randnum' : randNum })                self.conSock.realUsername = mpd_get_my_username()            self.streamHandler.set_handler(self.conSock,self.handle_console_input)            self.conSock.name = 'console'        else:            return  ## postpone it; hope the other one frees up soon    def handle_console_input(self,sock):        msg = self.conSock.recv_dict_msg()        if not msg:            mpd_print(0000, 'console has disappeared; closing it')            self.streamHandler.del_handler(self.conSock)            self.conSock.close()            self.conSock = 0            return        if not msg.has_key('cmd'):            mpd_print(1, 'console sent bad msg :%s:' % msg)            try:  # try to let console know                self.conSock.send_dict_msg({ 'cmd':'invalid_msg_received_from_you' })            except:                pass            self.streamHandler.del_handler(self.conSock)            self.conSock.close()            self.conSock = 0            return        if self.conSock.beingChallenged  and  msg['cmd'] != 'con_challenge_response':            mpd_print(1, 'console did not respond to con_challenge; msg=:%s:' % msg)            try:  # try to let console know                self.conSock.send_dict_msg({ 'cmd':'expected_con_challenge_response' })            except:                pass            self.streamHandler.del_handler(self.conSock)            self.conSock.close()            self.conSock = 0            return        if msg['cmd'] == 'con_challenge_response':            self.conSock.beingChallenged = 0            self.conSock.realUsername = msg['realusername']            if not msg.has_key('response'):                try:  # try to let console know                    self.conSock.send_dict_msg({ 'cmd':'missing_response_in_msg' })                except:                    pass                self.streamHandler.del_handler(self.conSock)                self.conSock.close()                self.conSock = 0                return            elif msg['response'] != self.conSock.expectedResponse:                try:  # try to let console know                    self.conSock.send_dict_msg({ 'cmd':'invalid_response' })                except:                    pass                self.streamHandler.del_handler(self.conSock)                self.conSock.close()                self.conSock = 0                return            self.conSock.send_dict_msg({ 'cmd':'valid_response' })        elif msg['cmd'] == 'mpdrun':

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -