Я занимаюсь программированием на C ++, под Linux.У меня есть два независимых процесса.Я должен обеспечить связь, используя именованный канал.
Читатель: -создание FIFO с использованием mkfifo - status = mkfifo (myFIFO, 0666) -открывает канал с использованием open - fifo = open (myFIFO, O_RDONLY) -читки из канала - num = read (fifo, temp, sizeof (temp))
Writer: -открывает канал - fifo = open (myFIFO, O_WRONLY);-записывает в канал - num = write (fifo, string, strlen (string));
Я заметил, что файловый дескриптор, возвращаемый для процесса чтения и записи, равен 0. Кроме того, после команды write яможно увидеть на моем терминале строку, которая должна быть записана в трубу.Я не знаю, почему это отображается на терминале ... Кроме того, число записанных байтов равно 0 ...
Не могли бы вы мне помочь?Спасибо !!!
// read.cpp:
#define myFIFO "/temp/FIFO"
int main(){
int num, fifo, status;
char temp[32];
if (status = mkfifo(myFIFO, 0666) < 0) {
printf("\n %s \n", strerror(errno));
return 0;
}
if (fifo = open(myFIFO, O_RDONLY) < 0) {
printf("\n %s \n", strerror(errno));
return 0;
}
if (num= read(fifo, temp, sizeof(temp)) < 0) {
printf("\n %s \n", strerror(errno));
return 0;
}
printf("In FIFO is %s \n", temp);
}
И в другом файле:
// write.cpp:
#define myFIFO "/temp/FIFO"
int main() {
int status, num, fifo;
char string[]="Testing...";
if (fifo = open(myFIFO, O_WRONLY) < 0) {
printf("\n %s \n", strerror(errno));
return 0;
}
if (num= write(fifo, string, strlen(string)) < 0) {
printf("\n %s \n", strerror(errno));
return 0;
}
}