Есть программа, написанная на c++, она является pipe сервером, в ней выполняется следующий код:
HANDLE hPipe;
char buffer[1024];
DWORD dwRead;
String out = "";
hPipe = CreateNamedPipe(TEXT("\\\\.\\pipe\\mypipe"), PIPE_ACCESS_DUPLEX | PIPE_TYPE_BYTE | PIPE_READMODE_BYTE,
PIPE_WAIT,
1,
1024 * 16,
1024 * 16,
NMPWAIT_USE_DEFAULT_WAIT,
NULL);
while (hPipe != INVALID_HANDLE_VALUE)
{
if (ConnectNamedPipe(hPipe, NULL) != FALSE) // wait for someone to connect to the pipe
{
out = "";
while (ReadFile(hPipe, buffer, sizeof(buffer) - 1, &dwRead, NULL) != FALSE)
{
buffer[dwRead] = '\0';
out += buffer;
}
}
WriteLog(0,"PIPE",out); //Этот код выводит на экран значение переменной out
DisconnectNamedPipe(hPipe);
}
Мне нужно чтобы при выполнении perl скрипта результат выводился в pipe. Вот мой perl скрипт:
sysopen(FIFO, "\\\\.\\pipe\\mypipe", O_WRONLY) or die "Couldn't open for writing: $!\n";
print FIFO "Hello world" or die "error print";
close FIFO;
Выводится надпись "error print"
Что я не так делаю?
На стороне сервера фиксируется подключение, но отсутствует чтение данных