我是C新手。我最终的目标是创建一个Apache模块,将Apache用户帐户的crontab作为JSON返回。从apache模块输出linux系统whoami的C代码
虽然宝宝的步骤。我已经成功地跟着从Apache模块(实际上我自己尼克邱的书)在以下两个位置输出“Hello World”的教程及其变化:
- 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”将不胜感激。
好点,虽然`ltrace`认为'whoami`使用`geteuid()`和`getpwuid()`。 – ephemient 2011-01-27 15:16:41