我正在尝试解决以下问题: 给出2个文件:“ names.txt”和“ phone.txt”。在“ names.txt”中每行都有一个名称,在“ phone.txt”中每行都有一个电话号码。 name.c从“ names.txt”逐行读取,phone.c从“ phone.txt”逐行读取。 name.c和phone.c都需要同步执行(使用fifo通讯渠道),以便打印出姓名和电话号码。
我已尝试将fifo1与fifo2交换100次,因为这似乎是最后一次的问题,但这一次没有成功
这是使用fifo频道的phone.c的一部分:
if (-1==mkfifo("fifo1",0600))
{
if (errno!=EEXIST)
perror("crearea a esuat");
}
if (-1==mkfifo("fifo2",0600))
{
if (errno!=EEXIST) perror("crearea a esuat");
}
fifo1=open("fifo1",O_RDONLY);
fifo2=open("fifo2",O_WRONLY);
for (int j=0;j<=n;j++)
{
read(fifo1,&ch,1);
printf("%s",string[j]);
write(fifo2,&ch,1);
}
这是使用来自name.c的fifo频道的部分。
if (-1==mkfifo("fifo1",0600) )
{
if (errno!=EEXIST)
perror("crearea a esuat");
}
fifo1=open("fifo1",O_WRONLY);
fifo2=open("fifo2",O_RDONLY);
for (int j=0;j<=n;j++)
{
printf("\n%s ",string[j]);
write(fifo1,&ch,1);
read(fifo2,&ch,1);
}
它先打印一个随机数字,例如“ 2742”,然后打印“ name.txt”的内容,但是在每个名称之后都不会打印任何电话号码。