communicate c program and php

后端 未结 4 1516
悲&欢浪女
悲&欢浪女 2020-12-03 09:14

I want to have a web page (written in php because it\'s what i know) that displays an input value. I want that value to be passed to a c programa that\'s already running.

4条回答
  •  余生分开走
    2020-12-03 10:05

    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 
    #include 
    #include 
    #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\n", 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\n", 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.

提交回复
热议问题