请问以下程序如何运行:commu-file-server.c #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> main(int argc, char * argv[]) { int fd; time_t now; char * message; if(argc!=2) { printf("errror usage!\nusage: server filename\n"); exit(1); } if((fd=open(argv[1],O_CREAT|O_WRONLY|O_TRUNC,0644))==-1) { perror("open"); exit(1); } while(1) { //time:获得时间参数,ctime:将时间转换为字符串 time(&now);//获取当前日历时间(从1970-01-01 00:00:00到现在的秒数),返回值存储在变量now message=ctime(&now);//返回带格式的日期和时间信息 if((lseek(fd,0,SEEK_SET))==-1) { perror("lseek"); exit(1); } if(write(fd,message,strlen(message))==-1) { perror("write"); exit(1); } sleep(1); } } commu-file-client.c #include <stdio.h> #include <stdlib.h> #include <fcntl.h> main(int argc, char *argv[]) { int fd,len; char buf[128]; if(argc!=2) { printf("error usage!\nusage: client filename"); exit(1); } if((fd=open(argv[1],O_RDONLY))==-1) { perror("open"); exit(1); } while((len=read(fd,buf,128))>0) { write(1,buf,len); } close(fd); }
时间: 2023-06-25 16:02:03 浏览: 109
mysql-5.7.31-1.sles12.x86_64.rpm-bundle.tar
这两个程序是文件通信的简单示例,其中commu-file-server.c是服务端代码,commu-file-client.c是客户端代码。服务端每秒钟向指定的文件中写入当前时间信息,而客户端则从该文件中读取信息并输出到终端上。
要运行这两个程序,需要在终端上分别编译服务端和客户端代码。可以使用以下命令进行编译:
```
gcc commu-file-server.c -o server
gcc commu-file-client.c -o client
```
编译后,会生成两个可执行文件:server和client。需要在不同的终端上分别运行这两个程序。可以按照以下步骤进行操作:
1. 在一个终端上启动服务端程序:
```
./server filename
```
其中,filename是指定的文件名,服务端会向该文件中写入当前时间信息。
2. 在另一个终端上启动客户端程序:
```
./client filename
```
其中,filename是同一个文件名,客户端会从该文件中读取信息并输出到终端上。
这样,就可以在客户端终端上看到服务端每秒钟写入的时间信息了。需要注意的是,服务端程序会一直运行,需要手动停止。客户端程序会在读取完文件中的信息后自动退出。
阅读全文