【发布时间】:2019-11-08 07:21:35
【问题描述】:
我有一个任务,我必须使用 fifo 将文件从客户端进程传输到服务器进程。我尝试将 fifo 文件作为我们在系统中创建的其他文件来处理。它编译没有任何错误,但它没有正确执行。有人可以给我一个关于计算机系统内的fifo文件结构的想法吗?它有哪些过程和功能?到目前为止,我知道如何使用 create()、read()、write()、open() 函数来处理 fifo 文件。另外,如果有人能帮助我更正,我将不胜感激我的程序?
我的客户端和服务器程序如下:-
客户程序:-
#include<stdio.h>
#include<string.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
int fd;
char *myfifo ="/tmp/myfifo";
char str[80];
FILE *fp;
char filename[20];
printf("\nEnter filename: ");
gets(filename);
mkfifo(myfifo,0666);
fp = fopen(filename,"r");
if(fp == NULL)
{
printf("\nError opening the file");
exit(1);
}
fd = open(myfifo, O_WRONLY);
while(fgets(str,80,fp)!=NULL)
{
write(fd,str,strlen(str)+1);
}
close(fd);
fclose(fp);
return 0;
}
客户程序:-
#include<stdio.h>
#include<string.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
int fd1;
char *myfifo ="/tmp/myfifo";
char str1[80], filename[20];
FILE *fp1, *fp2;
fd1= open(myfifo, O_RDONLY);
fp1 = fopen(filename,"r");
fp2 = fopen(filename,"w");
while(!feof(fp1))
{
read(fd1,str1,strlen(str1)+1);
fputs(str1,fp2);
}
return 0;
}
【问题讨论】:
标签: linux operating-system client-server ipc mkfifo