2011-08-05 22 views
3

私は `twisted.internet.reactor.spawnProcess'を介してPythonスクリプトを実行してみてください。twisted.internet.reactor.spawnProcessはOSErrorの提起(13、 'アクセス許可が拒否されました')

from twisted.internet import protocol, reactor 

class ProcessProtocol(protocol.ProcessProtocol): 
    def connectionMade(self): 
     self.transport.closeStdin() 

    def childDataReceived(self, childFD, data): 
     print data 

def main(): 
    proto = ProcessProtocol() 
    cmd = ['/var/projects/python/worker.py'] 
    reactor.spawnProcess(proto, cmd[0], cmd) 

if __name__ == "__main__": 
    exit(main()) 

私は次のエラーを取得します:

Upon execvpe /var/projects/python/worker.py ['/var/projects/python/worker.py', '5'] in environment id 29011152 
:Traceback (most recent call last): 
    File "/usr/local/lib/python2.6/dist-packages/Twisted-11.0.0-py2.6-linux-x86_64.egg/twisted/internet/process.py", line 414, in _fork 
    executable, args, environment) 
    File "/usr/local/lib/python2.6/dist-packages/Twisted-11.0.0-py2.6-linux-x86_64.egg/twisted/internet/process.py", line 460, in _execChild 
    os.execvpe(executable, args, environment) 
    File "/usr/lib/python2.6/os.py", line 353, in execvpe 
    _execvpe(file, args, env) 
    File "/usr/lib/python2.6/os.py", line 368, in _execvpe 
    func(file, *argrest) 
OSError: [Errno 13] Permission denied 
+0

''/ var/projects/python/worker.py''を実行する権限がありますか? – Santa

+0

スクリプトをrootで実行していますか?そうでない場合、 '/ var/projects/python/worker.py'ファイルは、スクリプトの実行に使用されたユーザが読むための適切な権限を持っていますか? – MatToufoutu

答えて

4

あなたは'/var/projects/python/worker.py'を実行する権限を持っていない可能性があります、またはそのスクリプトの実行ビットがセットされていません。 ls -l /var/projects/python/worker.pyを行って確認しますか?

+1

それが問題なのです。私は実行権限を持っていませんでした。 – cpburnz

+0

ドキュメントのバグを報告してください。 http://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.IReactorProcess.spawnProcess.html本当にEACCES(つまりerrno 13)について何か言わなければなりません。 – Glyph

関連する問題