利用管道技术在两个进程之间通讯.

我现在正在做一个基于P2P的通讯工具,需要用到关于两个进程之间传递信息的技术,所以想到了管道技术,下面是源代码,有时间在做分析.
服务器端:(无法自己关闭,需要给其发中断信号.)
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <linux/stat.h>
#include <sys/time.h>
#include <sys/types.h>


#define FIFO_FILE "/tmp/sampleFIFO"

int main()
{
    FILE *fp,*fp1;
    int n_fp;    
    fd_set readfds;
    char readbuf[80];
   
    umask(0);
    mknod (FIFO_FILE, S_IFIFO|0666, 0);
    while (1)
    {
        fp = fopen (FIFO_FILE, "r");
        n_fp = fileno(fp);
        FD_ZERO (&readfds);
        FD_SET (n_fp, &readfds);
        select (n_fp+1, &readfds, NULL, NULL, NULL);
        if (FD_ISSET (n_fp, &readfds))
        {                    
            fgets (readbuf, 80, fp);            
            printf ("Received string: %s/n", readbuf);
        }
        fclose (fp);
        
    }
}

客户端:(源自linux网络编程)
#include <stdio.h>
#include <stdlib.h>

#define FIFO_FILE "/tmp/sampleFIFO"
int main(int argc, char *argv[])
{
    FILE *fp;
   
    if (argc != 2)
    {
        printf ("USAGE: inputfifo [string] /n");
        exit (1);
    }
   
    if ((fp = fopen(FIFO_FILE, "w")) == NULL)
    {
        perror ("fopen");
        exit (1);
    }
   
    fputs(argv[1], fp);
   
    fclose (fp);
    printf("Hello world/n");
    return (0);
}
客户端命令:
[root@rainfish src]# ./inputfifo hello,rainfish
Hello world
[root@rainfish src]#

服务器端收到的信息:

Received string: hello,rainfish
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值