0
ループでPythonスクリプトが実行されない理由を理解できません。これが繰り返されるべきループが正しく実行されない理由
import gtk, sys
from ctypes import *
PIPE_ACCESS_DUPLEX = 0x3
PIPE_TYPE_MESSAGE = 0x4
PIPE_READMODE_MESSAGE = 0x2
PIPE_WAIT = 0
PIPE_UNLIMITED_INSTANCES = 255
BUFSIZE = 9600
NMPWAIT_USE_DEFAULT_WAIT = 0
INVALID_HANDLE_VALUE = -1
ERROR_PIPE_CONNECTED = 535
MESSAGE = "Default answer from server\0"
szPipename = "\\\\.\\pipe\\mynamedpipe"
def ReadWrite_ClientPipe_Thread(hPipe):
chBuf = create_string_buffer(BUFSIZE)
cbRead = c_ulong(0)
while True:
fSuccess = windll.kernel32.ReadFile(hPipe, chBuf, BUFSIZE, byref(cbRead), None)
if ((fSuccess ==1) or (cbRead.value != 0)):
messageArd = chBuf.value
cbWritten = c_ulong(0)
fSuccess = windll.kernel32.WriteFile(hPipe,c_char_p(MESSAGE), len(MESSAGE), byref(cbWritten), None)
windll.kernel32.FlushFileBuffers(hPipe)
windll.kernel32.DisconnectNamedPipe(hPipe)
windll.kernel32.CloseHandle(hPipe)
return 0
def main():
THREADFUNC = CFUNCTYPE(c_int, c_int)
thread_func = THREADFUNC(ReadWrite_ClientPipe_Thread)
while True:
print "Print test" #This should be repeated
hPipe = windll.kernel32.CreateNamedPipeA(szPipename,PIPE_ACCESS_DUPLEX,PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,PIPE_UNLIMITED_INSTANCES,BUFSIZE, BUFSIZE,NMPWAIT_USE_DEFAULT_WAIT,None)
fConnected = windll.kernel32.ConnectNamedPipe(hPipe, None)
if ((fConnected == 0) and (windll.kernel32.GetLastError() == ERROR_PIPE_CONNECTED)):
fConnected = 1
if (fConnected == 1):
dwThreadId = c_ulong(0)
hThread = windll.kernel32.CreateThread(None, 0,thread_func, hPipe, 0, byref(dwThreadId))
gtk.main()
if __name__ == "__main__":
main()
:私はDEFメインを変更したり、名前付きパイプのスクリプトを削除した場合
print "Print test"
、ループが正常に実行されます。
def main():
while True:
print "Print test" #This should be repeated
gtk.main()
誰かがこの問題を解決するのに役立つことがありますか?ありがとうございます
どのような出力/エラーメッセージが表示されますか? – mfrankli
その上にデバッガを置いてどこに行くのか見てみましょう。 – Doboy
エラーはありません。ループは1回だけ実行され、1回だけ "Print Test"が印刷されます。それは永遠に繰り返されるはずです。 – Varanka