【问题标题】:How do I check my php and pear version using C programming in Linux?如何在 Linux 中使用 C 编程检查我的 php 和 pear 版本?
【发布时间】:2014-05-24 14:34:30
【问题描述】:

如果可能的话,我不想使用字符串检测方法,您可以使用字符串函数来检测给定字符串输出中的版本。如果不可能,请忽略我刚刚输入的内容。

是否有类似 uname() 的函数,还是我必须编写自己的函数?如果是这样,请给我一个先机,或者您可以通过教我如何做来让我的生活更轻松。谢谢!

顺便说一句,如果这可能有帮助,我正在使用 Dreamhost 共享服务器,是的,它安装了 gcc、php5.3 和 pear 1.9.4。

【问题讨论】:

    标签: php c linux pear


    【解决方案1】:

    很抱歉让您失望了,但这就是您需要做的。 popen 函数是你的朋友。只需在读取模式下使用popen 调用“pear -V”,并将信息存储在一个缓冲区中,您可以轻松解析该缓冲区以隔离 pear 和 PHP 的版本号。它可以做得更干净,但它的要点是:

    FILE *pfd;
    char buffer[1024];
    char *bp = buffer;
    char tmp[100];
    size_t len;
    size_t line = 0;
    
    if ((pfd = popen ("pear -V", "r")) == NULL) {
        fprintf (stderr, "error: failed to open pipe.");
        return 1;
    }
    
    while (fgets (tmp, 1023, pfd) != NULL && line < 2)
    {
        len = strlen (tmp);
        strncpy (bp, tmp, len);
        bp += len;
        line++;
    }
    
    pclose (pfd);
    
    printf ("\nbuffer:\n\n%s\n\n", buffer);
    

    输出:

    buffer:
    
    PEAR Version: 1.9.4
    PHP Version: 5.3.8
    

    版本号的解析留给你。

    【讨论】:

    • 谢谢伙计。我仍然希望有人会弹出其他答案。
    • 在你等待的时候,用char *pear = fgets (tmp, 1023, pfd); char *php = fgets (tmp, 1023, pfd); char *pearver = strrch (pear, ' '); char *phpver = strrchr (php, ' ');替换while循环,至少你会有pearver和phpver的版本:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2014-10-29
    相关资源
    最近更新 更多