Создал named pipe между двумя программами на питоне. Спустя некоторое время своей работы, одна программа должна отправить сообщение в пайп второй. Все это время, вторая программа в цикле читает из пайпа.
При запуске второй программы, во время ReadFile() возникает эксепшн:
WindowsError: exception: access violation writing 0x1D1A9FD8
Создание пайпа в первой проге:
DBwrFuz = CreateNamedPipe("\\\\.\\pipe\\DBwr-Fuz-pipe", # pipe name PIPE_ACCESS_DUPLEX, # read/write access PIPE_TYPE_MESSAGE | # message type pipe PIPE_READMODE_MESSAGE | # message-read mode PIPE_WAIT, # blocking mode PIPE_UNLIMITED_INSTANCES, # max. instances BUFSIZE, # output buffer size BUFSIZE, # input buffer size 0, # client time-out None) # default security attribute if DBwrFuz == -1: print "Error! Create DBwr-Fuz pipe " + str(GetLastError()) return -1
Открытие пайпа и чтение во второй:
hDBwrFuz = CreateFile("\\\\.\\pipe\\DBwr-Fuz-pipe", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, None, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, None) if hDBwrFuz == -1: print "Error! Open DBwr-Fuz pipe " + str(GetLastError()) return -1 while True: try: msg_size, msg = ReadFile(hDBwrFuz, 512) except pywintypes.error, exc: if exc[0] not in [winerror.ERROR_BROKEN_PIPE,]: raise # except Exception as e: #Fuzzer terminated! # print(e) # break
Где я неправ?