python - バックグラウンドでos.listdirがエラー5(IOエラー)をスローする

原文 python linux fork listdir

現在、VKソーシャルネットワーク用のプラグインベースのサーバーを作成しています。プラグインシステムはYAPSYであり、プロセスはos.fork()を使用してバックグラウンドで処理されています。

上記のサーバー用のファイルサーバープラグインを作成しました。起動後は問題なく動作しますが、起動に使用したターミナルセッションを閉じると(ルートとして実行します)、ファイル/フォルダーリストを正常に返すために使用していたLISTコマンドがスローされます[Errno 5] Input/output error

次のように、フォルダーのコンテンツを取得するためにos.listdirを使用しています。

elif cmd == u'list':
            flist = os.listdir(self.cwd+'/'+('' if len(args)==0 else args[0]))
            otp = "Listing of "+(self.cwd.replace(self.topdirpath, "<root>") if len(args) == 0 else self.cwd.replace(self.topdirpath, "<root>")+"/"+args[0])+':\n'
            num = 0
            flist.sort()
            for fi in flist:
                otp += "["+str(num)+"] "+('-DIR- ' if os.path.isdir(self.cwd+'/'+('' if len(args)==0 else args[0])+'/'+fi) else '')+str(fi)+"\n"
                num += 1
            self.fSay(otp,vk,'200 LIST OK')
            return True


(filesvr.py Line 154)

サーバーを起動したSSHセッションは閉じていませんが、正常に機能します。

>> #$list
<< Listing of <root>:
[0] -DIR- AniArt
[1] -DIR- gifs
[2] -DIR- inbox


ただし、SSHからログオフすると、状況がおかしくなります。

>> #$list
<< libakcore longpoll server
There was an error processing your request. More info:
[Errno 5] Input/output error


フォルダーの内容は変更されておらず、同じユーザーから手動でアクセスできるため、問題がos.fork()os.listdir()のいずれか、または両方に同時に発生していることを除いて、私にはわかりません。ただし、別のスレッドから呼び出すか、フォークされたサーバースレッドから呼び出すかは問題ではありません。

どんな助けでも大歓迎です。
前もって感謝します。
答え
どうやらprintコマンドに関連していることが判明しました!

私のサーバーがfSayを使用して送信したものはすべて、fLogにも送信されました。 printの内部にfLogをラップすると、すべての問題が解消されます。

物事は時々本当に奇妙になります。
関連記事

python - ユーザーAがユーザーBをフォローしているかどうかを確認しますか?

python - Pythonで間違ったローカルIPアドレスを取得する

python - EB CLI 3.xのインストール後のエラー

python - python pypdfでpdfを2upに変換する

python - 次の行に進む前に、リスト内のすべての値の条件をテストするには

python - Squidプロキシは、PythonではなくcurlではないGETリクエストで501を返します

python - なぜprint()はcom1の読み取りに影響するのですか?

python - texファイルのトークン(文字列)をPythonの辞書の値で置き換えますか?

python - Pythonでのストックウェル変換

python - キャノピーパスにパスを追加するにはどうすればよいですか?