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

📄 npipe.c

📁 使用TAP的蜂窝型GSM手机短消息服务中心
💻 C
字号:
/* -------------------------------------------------------------------- *//* SMS Client, send messages to mobile phones and pagers		*//*									*//* npipe.c								*//*									*//*  Copyright (C) 1997,1998 Angelo Masci				*//*									*//*  This library is free software; you can redistribute it and/or	*//*  modify it under the terms of the GNU Library General Public		*//*  License as published by the Free Software Foundation; either	*//*  version 2 of the License, or (at your option) any later version.	*//*									*//*  This library is distributed in the hope that it will be useful,	*//*  but WITHOUT ANY WARRANTY; without even the implied warranty of	*//*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU	*//*  Library General Public License for more details.			*//*									*//*  You should have received a copy of the GNU Library General Public	*//*  License along with this library; if not, write to the Free		*//*  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.	*//*									*//*  You can contact the author at this e-mail address:			*//*									*//*  angelo@styx.demon.co.uk						*//*									*//* -------------------------------------------------------------------- *//* $Id$   -------------------------------------------------------------------- */#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/time.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <fcntl.h>#include "npipe.h"#include "common.h"/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */int create_named_pipe(char *file){	return mkfifo(file, O_RDWR|O_CREAT|O_NONBLOCK);}/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */int delete_named_pipe(char *file){	return unlink(file);}/* -------------------------------------------------------------------- *//* Read one character from named pipe.					*//* If no character is available block.					*//* -------------------------------------------------------------------- */int block_on_named_pipe(char *file){	fd_set 	readfds,		writefds,		exceptfds;	int	nfds,		rtval,		fd,		waiting, 		c,		res;	/* ---------------------------- */	fd = open(file, O_RDWR|O_NONBLOCK);	if (fd == -1)	{	return -1;	}	nfds = fd +1;	FD_ZERO(&writefds);	FD_ZERO(&readfds);	FD_ZERO(&exceptfds);	waiting = TRUE;	while(waiting)	{		FD_SET(fd,&readfds);		if ((rtval = select(nfds, &readfds, NULL, NULL, NULL)) != 0)		{			if (rtval > 0)		/* Select Woken on FDs */			{				if (FD_ISSET(fd, &readfds))				{						res = read(fd, &c, 1);					while(res != 1)					{						if (res == -1)						{								if (errno != EINTR)							{	return -1;							}						}						else						if (res == 0)						{	return -1;						}						res = read(fd, &c, 1);					}					waiting = FALSE;				}			}			else 			if (rtval == -1) 	/* Error Return Value */			{				if (errno != EINTR)				{	return -1;				}			}			}	}	close(fd);	return 0;}/* -------------------------------------------------------------------- *//* Write one character to named pipe.					*//* -------------------------------------------------------------------- */int write_to_named_pipe(char *file){	int	fd,		res,		c;	fd = open(file, O_RDWR|O_NONBLOCK);	if (fd == -1)	{	return -1;	}	c = 'X';	res = write(fd, &c, 1);	while(res != 1)	{		if (res == -1)		{			if (errno != EINTR)			{	return -1;			}		}		res = write(fd, &c, 1);	}	close(fd);	return 0;}

⌨️ 快捷键说明

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