나는 C의 초보자이다. 나의 최종 목표는 Apache 사용자 계정의 crontab을 JSON으로 반환하는 Apache 모듈을 만드는 것입니다.아파치 모듈에서 리눅스 시스템을 출력하는 C 코드
아기가 먼저 단계.
- 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/
I 출력 JSON에 약간의 예제를 수정 한 다음과 같이 내가 좋아하는 것
ap_rputs("{'hello': {'to': 'world', 'from': '?'}}", r);
가 대체 할 '를?' 리눅스 시스템의 'whoami'명령 출력 (결국 리눅스 명령 'crontab -lu username'을 실행하고 싶습니다. C 초보자로서 나는 이것에 대해 어떻게 할 것인지에 대한 선택에 압도 당하고 있지만, 나는 몇 가지 시도를 해왔고, 무엇인가를 올바르게 얻는 것에 가깝지 않은 것처럼 보인다. 나는 함정에 WHOAMI의 출력 수있을 것 않거나, 적어도 내 코드 실행을 컴파일)
FILE *sysp = popen("whoami","r");
을하지만 난 위의 권리를하고 있는가? 그리고 다음 단계는 무엇입니까? 위에서 출력의 길이를 결정한 다음 동일한 길이의 char 배열을 만들고 파일 핸들을 되감기하고 출력을 가져올 수도 있다고 생각했습니다. 그러나 나는 길이를 올바르게 얻는 것 같지 않으며, 아마도 이것은 차선책일까요? 나는 다음을 실행하면 내가 얻을 출력이 -1 (나는, 필요 즉 FCLOSE, 되감기 할 수 알고 라인의 몇 가지를 남겨 두었다) :
fseek(sysp, 0L, SEEK_END);
long len = ftell(sysp);
char buf[2];
sprintf(buf, "%d", (int)len);
ap_rputs(buf, r);
모든 포인터를 구체적으로 어떻게 더 나은 방법에 관해서 시스템 명령 "whoami"의 결과를 출력합니다.
좋은 점,'ltrace' 생각하지만 – ephemient
예,'geteuid()'는 현재 사용자의 UID를 알아 내는데 사용되며, 그 다음에는 passwd에서 사용자 이름을 검색합니다 (geteuid()는 geteuid()와 getpwuid 데이터베이스 (파일 또는 원격 데이터베이스 일 수 있음) 데이터베이스 조회는 차단할 수있는 비트입니다. –