ребята! Я пытаюсь сделать свою первую программу, которая использует именованные каналы или fifo. Клиент отправляет целые положительные числа сервера. Когда отправляется отрицательное число, передача закрывается. Сервер определяет минимальное количество отправленных, максимальное число и отправляет два значения обратно клиенту. Проблема в том, что всегда печатные max и min равны нулю, и я действительно не знаю, как решить проблему. Это то, что я до сих пор:именованные каналы (fifo) программа не работает
client.c
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
main(){
int f1,f2;
int n,a,b;
printf("Give the number: ");
scanf("%d",&n);
while(n >= 0){
printf("Give the number: ");
scanf("%d",&n);
}
f1=open("fifo1",O_WRONLY);
f2=open("fifo2",O_RDONLY);
if(f1<0){
printf("You can't write in the fifo client");
}
if(f2<0){
printf("You can't read from the fifo client");
}
write(f1,&n,sizeof(int));
read(f2,&a,sizeof(int));
read(f2,&b,sizeof(int));
printf("The minimum number is %d\n",a);
printf("The maximum number is %d\n",b);
close(f2);
close(f1);
}
server.c
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
int minim=0;
int maxim=0;
int min(int n){
if(n>=0 && minim > n){
minim=n;
}
return minim;
}
int max(int n){
if (n > maxim){
maxim=n;
}
return maxim;
}
main(){
int f1,f2,a,b,n;
f1=open("fifo1",O_RDONLY);
f2=open("fifo2",O_WRONLY);
if(f1<0){
printf("error");
}
if(f2<0){
printf("error");
}
read(f1,&n,sizeof(int));
a = min(n);
b = max(n);
write(f2,&a,sizeof(int));
write(f2,&b,sizeof(int));
close(f1);
close(f2);
}
Вы в том же классе, что и вы, тот же человек, что и человек, который спросил [этот очень похожий вопрос] (http://stackoverflow.com/questions/16482874)? – pilcrow
@pilcrow Да, я тот же человек, но я забыл пароль с этой учетной записи. :(Но как это уместно для моего вопроса? –
И я нахожу странным тон вопроса: на самом деле именованные каналы работают как задокументированные, вам просто сложно выяснить, как их правильно использовать. Это не именованные каналы «Ошибка (или ошибка ядра). –