FifoとCでのプログラムの開発に個人的に興味があるので、私はこの演習に固執しています。私は大きな間違いを犯しています。 Fifoは作成されていますが、内部にフローはありません.Fifoの保護/クローズ/オープンメカニズムに依存する必要があります。助けてください。Fifo [c] Training
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char** argv)
{
int c;
int fi;
int fo;
int stat;
int pid;
fprintf(stderr, "Fifo...\n");
if (mkfifo("FifoA", 0666)==-1) {
exit(1);
}
if (mkfifo("FifoB", 0666)==-1) {
exit(1);
}
pid = fork();
switch (pid) {
case 0:
if((fo=open("FifoA",O_RDONLY))==-1)
{
perror("error FifoA");
exit(1);
}
close(fi);
while (read(fo, &c, 1)>0) {
c = toupper(c);
fputc(c,stdout);
}
break;
case -1:
fprintf(stderr, "Fork error\n");
exit(1);
default:
if((fi=open("FifoB",O_WRONLY))==-1)
{
perror("error FifoB");
exit(1);
}
close(fo);
while ((c = fgetc(stdin))!=EOF) {
write(fi, &c, 1);
}
close(fi);
wait(&stat);
break;
}
return 0;
}
したがって、_child_は_writing_( 'O_WRONLY')のためにfifoを開き、それから_reads_をオープンしますか?そして、親は_reading_のために開き、それから_writes_を開きますか?それは正しく見えません。 – Useless