设为首页 加入收藏

TOP

总结文件操作函数(二)-C语言(四)
2015-01-22 21:26:23 来源: 作者: 【 】 浏览:129
Tags:总结 文件 操作 函数 语言
index; for(index=0;index

客户端设计:永久服务器管道(客户端只向此通道写入)>读写双通道(使用唯一的进程ID创建两通道)>向服务器管道写入唯一进程ID >open打开双通道转化为进程描述符>fork()创建父子进程>父进程负责写信息(用于杀死子进程kill(),unlink()删除通道文件,使用signal(),回收子进程,exit()自杀)


//File Name: myclient.c
#include 
              
               
#include 
               
                 #include 
                
                  #include 
                 
                   #include 
                  
                    #include 
                   
                     #include 
                    
                      #include 
                     
                       #include 
                      
                        #include 
                       
                         void handler(int num) { wait(NULL); exit(-1); } int main(int argc,char *argv[]) { if(argc!=2) { printf("Not Input PipeName!\n"); exit(-1); } int fd_sever;//服务器管道标识符 int fd_read,fd_write;//读写管道标识符 char buf[1024]; char fifo_write[128]=""; char fifo_read[128]=""; int pid; fd_sever=open(argv[1],O_WRONLY);//向服务器管道写入信息 sprintf(fifo_read,"%d_read.fifo",getpid()); sprintf(fifo_write,"%d_write.fifo",getpid()); mkfifo(fifo_read,0666); mkfifo(fifo_write,0666); FILE *fp=fdopen(fd_sever,"w"); if(fp==NULL) { perror("sever link failed!\n"); exit(-1); } fprintf(fp,"%d",getpid());//提示服务器上线,并通过进程号告诉服务器自己的读写管道 fflush(fp); fd_read=open(fifo_read,O_RDONLY); fd_write=open(fifo_write,O_WRONLY);//文件 printf("%d begin talk!",getpid()); if((pid=fork())>0)//父进程负责写 { close(fd_read); signal(17,handler); //格式化输入 FILE *fdw=fdopen(fd_write,"w"); if(fdw==NULL) { printf("the fd_write is failed\n"); exit(-1); } while(memset(buf,0,1024),fgets(buf,1024,stdin)!=NULL) { fprintf(fdw,"from %d :%s",getpid(),buf); fflush(fdw); } fprintf(fdw,"%s","bye"); fflush(fdw); printf("kill child!\n"); close(fd_write); kill(pid,9); unlink(fifo_read); unlink(fifo_write); while(1); } else { close(fd_write); while(memset(buf,0,1024),read(fd_read,buf,1024)>0) { fflush(stdout); write(1,buf,strlen(buf)); fflush(stdout); } close(fd_read); } return 0; } 
                       
                      
                     
                    
                   
                  
                 
                
               
              



首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇排序(5)---------快速排序(C语言.. 下一篇C语言柔性数组

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: