example24.c

来自「Linux网络编程配套源代码 不过看的时候最好和书籍一起配套看」· C语言 代码 · 共 38 行

C
38
字号
#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 + =
减小字号Ctrl + -
显示快捷键?