使用命名管道完成非亲缘关系进程间的通信(转)
(2013-03-19 09:25:10)一、命名管道的概念
mknod namedpipe
#include
#include
int mknod(const char *path,mode_t mod,dev_t dev);
int mkfifo(const char *path,mode_t mode);
umask(0);
if (mknod("/tmp/fifo",S_IFIFO | 0666) == -1)
{
perror("mkfifo error");
exit(1);
}
umask(0);
if (mkfifo("/tmp/fifo",S_IFIFO|0666) == -1)
{
perror("mkfifo error!");
exit(1);
}
#include
#include
#include
#include
#include
#include
#define FIFO_NAME "myfifo"
#define BUF_SIZE 1024
int main(void)
{
int fd;
char buf[BUF_SIZE];
umask(0);
fd = open(FIFO_NAME,O_RDONLY);
read(fd,buf,BUF_SIZE);
printf("Read content: %s\n",buf);
close(fd);
exit(0);
}
#include
#include
#include
#include
#include
#include
#define FIFO_NAME "myfifo"
#define BUF_SIZE 1024
int main(void)
{
int fd;
char buf[BUF_SIZE] = "Hello 10-6,I come from process named
10-5!";
umask(0);
if (mkfifo(FIFO_NAME,S_IFIFO|0666) == -1)
if ((fd = open(FIFO_NAME,O_WRONLY)) == -1)
write(fd,buf,strlen(buf)+1);
close(fd);
exit(0);
}
$ ./10-5
Read content: Hello 10-6,I come from process named 10-5!
#include
#include
#include
#include
#include
#include
#include
#define FIFO_READ "readfifo"
#define FIFO_WRITE "writefifo"
#define BUF_SIZE 1024
int main(void)
{
int wfd,rfd;
char buf[BUF_SIZE];
int len;
umask(0);
if (mkfifo(FIFO_WRITE,S_IFIFO|0666))
umask(0);
wfd = open(FIFO_WRITE,O_WRONLY);
if (wfd == -1)
while((rfd = open(FIFO_READ,O_RDONLY)) == -1)
while(1)
}
#include
#include
#include
#include
#include
#include
#define FIFO_READ "writefifo"
#define FIFO_WRITE "readfifo"
#define BUF_SIZE 1024
int main(void)
{
int wfd,rfd;
char buf[BUF_SIZE];
int len;
umask(0);
if (mkfifo(FIFO_WRITE,S_IFIFO|0666))
if ((rfd = open(FIFO_READ,O_RDONLY)) == -1)
wfd = open(FIFO_WRITE,O_WRONLY);
if (wfd == -1)
while(1)
}
$ ./10-7
Server:hello
Client: world
$ ./10-8
Server: hello
Client:world
前一篇:(转)FC网络学习笔记
后一篇:结构体之位域详说(转)

加载中…