2016-04-20 7 views
0

Ich habe ein Programm, das 2 Kinder (läuft 2 Prozesse von execl) und ein Fifo hat. Ich kann printf nicht verwenden, und ich möchte beide Kinder schreiben und lesen von Fifo. Problem ist, ich möchte nur erste Kind, um sicherzustellen, dass alles, was er schreibt, in meinem FIFO wird auf dem Bildschirm ausgedruckt werden. "fifoCommunication" ist der Name des von Vater geschaffenen Fifos. hier ist der Code innerhalb des Prozesses der ersten Kindes nur:Drucken auf dem Bildschirm von Fifo stdout fehlgeschlagen

int main() { 
int fd_write = open("fifoCommunication",O_WRONLY); 
dup(fd_write,0); 
write(fd_write,"to be printed to screen!" ,18);} 

ich, dass es nicht die richtige Syntax wissen, aber ich weiß nicht, wie die Nachricht, um sicherzustellen, ordnungsgemäß auf den Bildschirm ausgegeben wird, und auch die Verhinderung anderes Kind, um Nachrichten auf dem Bildschirm zu drucken, nur zum FIFO.

+0

ja, ich habe es nur als Beispiel verwendet –

Antwort

1

Ich fürchte, dass Ihre Anforderungen miteinander in Konflikt stehen.

Ich möchte nur das erste Kind, um sicherzustellen, dass alles, was er schreibt in meine FIFO wird auf dem Bildschirm ausgedruckt werden.

Daher muss FIFO auf die Konsole drucken, was auch immer es bekommt. FIFO unterscheidet nicht zwischen Prozessen, die darauf gedruckt wurden. Es weiß nicht, dass es das erste oder das zweite Kind ist, das zu diesem Zeitpunkt write anrief.

das andere Kind zu verhindern Meldungen auf dem Bildschirm zu drucken, nur den FIFO

Deshalb ist diese oben im Widerspruch, da Druck „nur auf die Fifo“ auf dem Bildschirm gedruckt werden muss auch, wenn frühere Anforderung ist zu erfüllen. Sie können erreichen, was Sie wollen, indem Sie separat zu fifo und zum stdout drucken.

(es sei denn, Sie ändern den Kernelcode, um zum Beispiel das erste Byte der zu druckenden Nachricht zu prüfen, also würden Sie jeder Daten '1' oder '2' oder was auch immer Sie wählen und entsprechende Maßnahmen ergreifen Kernel darauf basiert - aber dann, was mit allen anderen Verwendungen von Fifo auf Ihrem Rechner passieren wird, ist nichts sehr wahrscheinlich, also tun Sie es nicht)

Verwandte Themen