Я практикую IPC, используя именованные каналы в Unix, и пытаюсь записать строку в файл FIFO, используя python, и перевернуть ее через программу C ++. Но программа на Python зависает и не возвращает результата.
Код Python Для записи в файл:
import os
path= "/home/myProgram"
os.mkfifo(path)
fifo=open(path,'w')
string=input("Enter String to be reversed:\t ")
fifo.write(string)
fifo.close()
Программа зависает и не запрашивает здесь никакого ввода.
Я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "writer.py", line 4, in <module>
fifo=open(path,'w')
KeyboardInterrupt
C ++ код для чтения из файла:
#include <fcntl.h>
#include <iostream>
#include <sys/stat.h>
#include <unistd.h>
#include <string>
#include <string.h>
#define MAX_BUF 1024
using namespace std;
char* strrev(char *str){
int i = strlen(str)-1,j=0;
char ch;
while(i>j)
{
ch = str[i];
str[i]= str[j];
str[j] = ch;
i--;
j++;
}
return str;
}
int main()
{
int fd;
char *myfifo = "/home/myProgram";
char buf[MAX_BUF];
/* open, read, and display the message from the FIFO */
fd = open(myfifo, O_RDONLY);
read(fd, buf, MAX_BUF);
cout<<"Received:"<< buf<<endl;
cout<<"The reversed string is \n"<<strrev(buf)<<endl;
close(fd);
return 0;
}
Поскольку программа записи не может быть выполнена, не в состоянии проверить код считывателя и, следовательно, не может упомянуть результат здесь.
Пожалуйста, помогите.