通过路径看到共同资源
- 在shell下交互的建立
- 调用函数
//client: 1 #include<stdio.h> 2 #include<unistd.h> 3 #include<sys/types.h> 4 #include<sys/stat.h> 5 #include<stdlib.h> 6 #include<string.h> 7 #include<fcntl.h> 8 int main() 9 { 10 umask(0); 11 int fd=mkfifo("./.tmp",S_IFIFO|0666); 12 if(fd<0) 13 { 14 perror("mkfifo"); 15 exit(1); 16 } 17 int _fd=open("./.tmp",O_WRONLY); 18 if(_fd<0) 19 { 20 perror("mkfifo"); 21 exit(1); 22 } 23 while(1) 24 { 25 char buf[1024]; 26 fflush(stdout); 27 memset(buf,‘\0‘,sizeof(buf)); 28 printf("client:"); 29 size_t size=read(0,buf,sizeof(buf)-1); 30 buf[size]=‘\0‘; 31 write(_fd,buf,strlen(buf)); 32 } 33 return 0; 34 } //server: 1 #include<stdio.h> 2 #include<string.h> 3 #include<sys/types.h> 4 #include<sys/stat.h> 5 #include<fcntl.h> 6 #include<unistd.h> 7 #include<stdlib.h> 8 int main() 9 { 10 int _fd=open("./.tmp",O_RDONLY); 11 if(_fd<0) 12 { 13 perror("open"); 14 exit(1); 15 } 16 char buf[1024]; 17 while(1) 18 { 19 memset(buf,‘\0‘,sizeof(buf)); 20 ssize_t _size=read(_fd,buf,sizeof(buf)-1); 21 if(_size>0) 22 { 23 buf[_size]=‘\0‘; 24 printf("server:%s",buf); 25 } 26 else 27 { 28 printf("read error\n"); 29 break; 30 } 31 } 32 close(_fd); 33 return 0; 34 } //Makefile编写: .PHONY:all 2 all:client server 3 4 client:client.c 5 gcc -o [email protected] $^ 6 server:server.c 7 gcc -o [email protected] $^ 8 .PHONY:clean 9 clean: 10 rm -f client server .tmp
结果验证:打开两个终端,不同进程可以通信。
时间: 2024-12-26 14:58:00