M
macke_a
Mitglied
Hallo!
Ich versuche seit ein paar Tagen vergeblich ein Pipe zwischen zwei Prozessen aufzubauen. Das Problem ist, dass ich eine unidirektionale Verbindung zu 100% hin bekomme, nur eine bidirektionale nicht!
Ich habe jeder PIPE einen unterschiedlichen Namen zugeteilt. Sobald ich jetzt die Daten von Prozess1 nach Prozess2 schreibe und wieder von Prozess2 nach Prozess1 zurück schreibe, läuft mein Programm nicht mehr!
Meine Sende PIPE:
main()
{
int ein;
int hilf;
char outbuffer[2];
int fd;
int lese;
do
{
fd = open("MY_PIPE",O_RDONLY);
if (fd==-1)
sleep(2);
} while (fd==-1);
while(1)
{
lese=read(fd,outbuffer,2);
if (lese==0) break;
// Hier verwende ich meine outbuffer weiter
sleep(2);
}
unlink("MY_PIPE");
return 0;
}
Meine Empfangs PIPE:
main()
{
int ein;
int hilf;
char inbuffer[2];
int fd;
mkfifo("MY_PIPE",0666);
fd = open("MY_PIPE",O_WRONLY);
for(hilf=0;hilf<10;hilf++)
{
inbuffer[0]=48+hilf;
write(fd,inbuffer,2);
// Hier verwende ich meinen inbuffer
sleep(1);
}
return 0;
}
So jetzt habe ich jeweils in einem Prozess diesen Sende- und Empfangs- Buffer, die PIPE NAMEN habe ich dementsprechend angepaßt!
Kann mir jemand weiter helfen ??
Das wäre echt toll!
Danke schon mal im Voraus!!
Mfg macke_a
Ich versuche seit ein paar Tagen vergeblich ein Pipe zwischen zwei Prozessen aufzubauen. Das Problem ist, dass ich eine unidirektionale Verbindung zu 100% hin bekomme, nur eine bidirektionale nicht!
Ich habe jeder PIPE einen unterschiedlichen Namen zugeteilt. Sobald ich jetzt die Daten von Prozess1 nach Prozess2 schreibe und wieder von Prozess2 nach Prozess1 zurück schreibe, läuft mein Programm nicht mehr!
Meine Sende PIPE:
main()
{
int ein;
int hilf;
char outbuffer[2];
int fd;
int lese;
do
{
fd = open("MY_PIPE",O_RDONLY);
if (fd==-1)
sleep(2);
} while (fd==-1);
while(1)
{
lese=read(fd,outbuffer,2);
if (lese==0) break;
// Hier verwende ich meine outbuffer weiter
sleep(2);
}
unlink("MY_PIPE");
return 0;
}
Meine Empfangs PIPE:
main()
{
int ein;
int hilf;
char inbuffer[2];
int fd;
mkfifo("MY_PIPE",0666);
fd = open("MY_PIPE",O_WRONLY);
for(hilf=0;hilf<10;hilf++)
{
inbuffer[0]=48+hilf;
write(fd,inbuffer,2);
// Hier verwende ich meinen inbuffer
sleep(1);
}
return 0;
}
So jetzt habe ich jeweils in einem Prozess diesen Sende- und Empfangs- Buffer, die PIPE NAMEN habe ich dementsprechend angepaßt!
Kann mir jemand weiter helfen ??
Das wäre echt toll!
Danke schon mal im Voraus!!
Mfg macke_a