⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example2-04.c

📁 Linux网络测试程序
💻 C
字号:
/*************************************************************  * 用FIFO实现进程间通信的例子example2-03.c  example2-03.c  ************************************************************/ /*******************************************************************************************  * 首先,用自己的进程ID作为所创建的FIFO的名字的后一部分。 * 然后,客户端请求其进程号、一个空格、一个路径名和一个换行符组成。其中,路径名从标准输入读入。 * 接着,打开服务器的FIFO将自己的请求写入。  * 最后,从本客户的FIFO中读出服务器返回的内容并将其打印到标准输出,关闭客户的FIFO并删除。 * * 程序的运行:可以在两个窗口中分别运行服务器端和客户端进程。               也可以在同一窗口中先将服务器进程作为后台来运行,然后运行客户进程。 *******************************************************************************************//*****************************************   * 客户端程序example2-04.c *****************************************/#include	<stdlib.h>#include 	<stdio.h>#include	<unistd.h>#include	<errno.h>#include	<sys/stat.h>#include	<fcntl.h>#define		LINE		1024#define 	FILE_MODE  (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)#define		SERV_FIFO  "/tmp/fifo.serv"int main(){	int		readf, writef;	size_t	len;	size_t	n;	char	*ptr, fifoname[LINE], buff[LINE];	pid_t	pid;	pid = getpid();	snprintf(fifoname, sizeof(fifoname), "tmp/fifo.%d", (long)pid);	if ((mkfifo(fifoname, FILE_MODE) < 0) && (errno != EEXIST)) //未产生文件或文件不存在,则		printf("can't create %s", fifoname);	snprintf(buff, sizeof(buff), "%ld", (long)pid);	len = strlen(buff);	ptr = buff + len;	fgets(ptr, LINE - len, stdin);	len = strlen(buff);	writef = open(SERV_FIFO, O_WRONLY, 0);	write(writef, buff, len);	readf = open(fifoname, O_RDONLY, 0);	while ((n = read(readf, buff, LINE)) > 0)		write(STDOUT_FILENO, buff, n);	close(readf);	unlink(fifoname);	exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -