📄 clientfd1.c
字号:
#include "unpipc.h"intmain(int argc, char **argv){ int door, fd; char argbuf[BUFFSIZE], resbuf[BUFFSIZE], buff[BUFFSIZE]; size_t len, n; door_arg_t arg; if (argc != 2) err_quit("usage: clientfd1 <server-pathname>"); door = Open(argv[1], O_RDWR); /* open the door */ Fgets(argbuf, BUFFSIZE, stdin); /* read pathname of file to open */ len = strlen(argbuf); if (argbuf[len-1] == '\n') len--; /* delete newline from fgets() */ /* 4set up the arguments and pointer to result */ arg.data_ptr = argbuf; /* data argument */ arg.data_size = len + 1; /* size of data argument */ arg.desc_ptr = NULL; arg.desc_num = 0; arg.rbuf = resbuf; /* data results */ arg.rsize = BUFFSIZE; /* size of data results */ Door_call(door, &arg); /* call server procedure */ if (arg.data_size != 0) err_quit("%.*s", arg.data_size, arg.data_ptr); else if (arg.desc_ptr == NULL) err_quit("desc_ptr is NULL"); else if (arg.desc_num != 1) err_quit("desc_num = %d", arg.desc_num); else if (arg.desc_ptr->d_attributes != DOOR_DESCRIPTOR) err_quit("d_attributes = %d", arg.desc_ptr->d_attributes); fd = arg.desc_ptr->d_data.d_desc.d_descriptor; while ( (n = Read(fd, buff, BUFFSIZE)) > 0) Write(STDOUT_FILENO, buff, n); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -