Some simple solutions I can think of are:
Redis
You could use redis as your ipc using hiredis as your c client library. I never used hiredis library before but did it just now for you to test and the library is really good. I could have known it because redis is the best piece of C code I know :).
modify example.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "hiredis.h"
int main(void) {
redisContext *c;
redisReply *reply;
c = redisConnect((char*)"127.0.0.1", 6379);
if (c->err) {
printf("Connection error: %s
", c->errstr);
redisFree(c);
exit(1);
}
/* Blocking pop. */
reply = redisCommand(c, "BLPOP php 0");
if (reply->type == REDIS_REPLY_ARRAY) {
if (reply->elements == 2) {
printf("%s
", reply->element[1]->str);
}
}
freeReplyObject(reply);
redisFree(c);
return 0;
}
Compile and run example:
make
./hiredis-example
from ./redis-cli:
from another tab start start redis-cli(for prototyping) and issue the following command. You should replace this with predis as php client library, but that is going to be very easy:
lpush php "Hello from PHP"
Inside running hiredis-example:
You should see the message "Hello from PHP". Easy as pie if you ask me :).
Named pipes
You could use a named pipes.
Sockets
You could read the Beej's Guide to Network Programming Using Internet Sockets. In my opinion this is a very good read.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…