Linux下PHP与普通C程序通信

Linux下的普通C程序之前可以使用FIFO(有名管道来进行进程间通信,因为这个管道以一个文件的形式存在于文件系统上,因此只要能读写这个文件就可以实现进程间通信。

首先使用mkfifo命令有文件系统上创建一个管道:

$mkfifo /tmp/php-fifo.fifo

 

PHP代码:

<?php

$fp = fopen("/tmp/php-fifo.fifo", "w");

if (!$fp)
    echo "Open file failed";

fwrite($fp, "abcdef");


fclose($fp);

 

C代码:

#include <stdio.h>
#include <stdlib.h>


int main()
{
    char buf[1024];



    while (1)
    {
        int len = 0;
        FILE *fp = fopen("/tmp/php-fifo.fifo", "r");
        if (!fp)
        {
            fprintf(stderr, "Open file failed\n");
            exit(-1);
        }

        while ((len = fread(buf, 1, 1024, fp)) > 0)
        {
            buf[len] = '\0';
            printf("read: %s\n", buf);
        }

        fclose(fp);
    }

    return 0;
}

 

posted on 2015-08-12 12:50  clpszpp  阅读(476)  评论(0编辑  收藏  举报

导航