• 姓名 胡家揆
  • 学号 201821121023
  • 班级 计算1811

1. 编写程序

在服务器上用Vim编写程序:创建一个命名管道,创建两个进程分别对管道进行读fifo_read.c和写fifo_write.c。给出源代码。

fifo_read.c

#include<unistd.h>
#include<errno.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
int main()
{  //创建管道 
    int fif=mkfifo("fifo",0777);
    if(fif<0){
        printf("Failed to create fifo!\n");
        return -1;
    }
    
    int fr=open("fifo",O_RDONLY);//读取端只读选项 
        if(fr<0){
            printf("Failed to open fifo!\n");
            return -1;
    }
    else{
            printf("connect right!\n");
            while(1){
                char buff[500]={0};
                int size=read(fr,buff,500);
                if(size>0){
                    printf("read content is:%s\n",buff);//显示接受内容 
                }
            }
    }
    close(fr);
    return 0;
}

fifo_write.c

#include<unistd.h>
#include<errno.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
int main()
{  
    int fw=open("fifo",O_WRONLY);//写入端,只写 
    if(fw<0){
        printf("Failed to open fifo!\n");
        return -1;
    }
    else{
        printf("Start writing!\n");
        while(1){
            printf("write:");
            char buff[500];
            scanf("%s",buff);
            int size=write(fw,buff,500);
            if(size<0){
               printf("Error!\n");
            }
            else{
               printf("write content is:%s\n",buff);//显示输入内容 
            }
        }
    }
    close(fw);
    return 0;
}

 

2. 分析运行结果

给出运行结果,并分析。

 

 

 分析(左边读取,右边输入):

1.创建管道--先运行read.c等待write的连接,实现创建管道的代码在read.c的开头。

2.接着打开另一个客户端,运行write.c后分别出现connect right和Start writing!表示管道连通,可以实现读写。

3.想要中断程序运行ctrl+c,后再次运行要删除之前生成的fifo文件。   

3. 通过该实验产生新的疑问及解答

通过该实验如果有产生新的疑问,可以写出来,并尝试自己解决问题。

 

 通过psftp向服务器传输文件后有文字乱码,然而通过vim修改文件,保存文件时,提示“readonly option is set”如何解决?

通过wq!强制保存修改。

 

posted on 2020-04-17 16:27  top1-s1mple  阅读(183)  评论(0编辑  收藏  举报