📄 mpdkilljob.py
字号:
#!/usr/bin/env pythonfrom os import environ, getuid, closefrom sys import argv, exitfrom socket import socket, fromfd, AF_UNIX, SOCK_STREAMfrom signal import signal, SIG_DFL, SIGINT, SIGTSTP, SIGCONTfrom mpdlib import mpd_set_my_id, mpd_send_one_msg, mpd_recv_one_msg, \ mpd_get_my_username, mpd_raise, mpdErrordef mpdkilljob(): mpd_set_my_id('mpdkilljob_') if len(argv) < 2 or argv[1] == '-h' or argv[1] == '--help': print 'usage: mpdkilljob jobnum [mpdid] # as obtained from mpdlistjobs' print ' or: mpdkilljob -a jobalias # as obtained from mpdlistjobs' print ' mpdid is mpd contacted by mpdrun to start the job (defaults to here)' exit(-1) username = mpd_get_my_username() if environ.has_key('UNIX_SOCKET'): conFD = int(environ['UNIX_SOCKET']) conSocket = fromfd(conFD,AF_UNIX,SOCK_STREAM) close(conFD) else: consoleName = '/tmp/mpd2.console_' + username conSocket = socket(AF_UNIX,SOCK_STREAM) # note: UNIX socket try: conSocket.connect(consoleName) except Exception, errmsg: mpd_raise('cannot connect to local mpd') # mpd_raise('cannot connect to local mpd; errmsg: %s' % (str(errmsg)) ) mpdid = '' if argv[1] == '-a': jobalias = argv[2] jobnum = '0' else: jobalias = '' jobid = argv[1] sjobid = jobid.split('@') jobnum = sjobid[0] if len(sjobid) > 1: mpdid = sjobid[1] mpd_send_one_msg(conSocket, {'cmd':'mpdkilljob', 'jobnum' : jobnum, 'mpdid' : mpdid, 'jobalias' : jobalias, 'username' : username}) msg = mpd_recv_one_msg(conSocket) if not msg or msg['cmd'] != 'mpdkilljob_ack': if msg['cmd'] == 'already_have_a_console': mpd_raise('mpd already has a console (e.g. for long ringtest); try later') else: mpd_raise('unexpected message from mpd: %s' % (msg) ) conSocket.close()def sigint_handler(signum,frame): exit(-1)if __name__ == '__main__': signal(SIGINT,sigint_handler) try: mpdkilljob() except mpdError, errmsg: print 'mpdkilljob failed: %s' % (errmsg)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -