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; }