我是C新手。我的最终目标是创建一个 Apache 模块,将 Apache 用户帐户的 crontab 作为 JSON 返回。
婴儿先迈出第一步。我已经成功地按照以下两个位置的教程从 Apache 模块输出“hello world”及其变体(实际上我拥有 Nick Kew 的书):
- http://www.cb1inc.com/2007/12/24/creating-a-hello-world-apache-module-with-kdevelop-on-ubuntu/
- http://www.theregister.co.uk/2006/10/03/apache_modules/
我稍微修改了示例以输出 JSON,如下所示:
ap_rputs("{'hello': {'to': 'world', 'from': '?'}}", r);
我想替换“?” 上面是Linux系统的'whoami'命令的输出(最终我想运行linux命令'crontab -lu username')。作为一个 C 新手,虽然我对如何去做这件事的选择感到不知所措,但我已经尝试了一些事情,但似乎并没有接近正确。我似乎确实能够捕获 whoami 的输出,或者至少我的代码可以编译并运行;)
FILE *sysp = popen("whoami","r");
但我什至在做上述正确的事吗?下一步是什么?我想我可能会尝试从上面确定输出的长度,然后创建一个相同长度的 char 数组,倒回文件句柄并获取输出。但我似乎没有正确获得长度,也许这是一种次优方法?当我运行以下命令时(我遗漏了几行我知道可能需要的行,即倒带,fclose),我得到的输出是-1:
fseek(sysp, 0L, SEEK_END);
long len = ftell(sysp);
char buf[2];
sprintf(buf, "%d", (int)len);
ap_rputs(buf, r);
任何关于如何更好地从系统命令“whoami”输出结果的指针将不胜感激。