나는 대학을위한 약간의 교과 과정을하고 있으며, 나는 완전히 당혹 스럽다. 기본적으로 C에서 소켓을 사용하는 기본 웹 서버를 만들었습니다. 이제 모든 .php 파일이 PHP 컴파일러와 출력을 통해 실행되도록 만들었습니다.C 기반 웹 서버에서 PHP를 실행하고 출력 - Stuck!
내가 겪고있는 문제는 system()과 execlp() (후자는 강사가 추천 함)를 사용해 보았고 터미널 대신 페이지에 표시하는 방법을 찾을 수 없다는 것입니다. .
여기에 제가 현재 가지고있는 코드가 있습니다. 당신이 볼 수있는 모든 의견을 변명해라. 나는 그것이 일하기 위해 모든 종류를 시험해보고 있었다!
CODE :
if(strncmp(resource, ".php", 4)==1) {
//cout << "test";
INT PHP;
int phppipefds[2], phppid;
char phpc;
pipe(phppipefds);
phppid = fork();
if(phppid == 0) { // child will read pipe
close(0); // close stdin
dup2(phppipefds[0],0); // read pipe on stdin
close(phppipefds[1]); // we dont need to write pipe
execlp("/Applications/MAMP/bin/php5/bin/php", "php", httppath, NULL);
cerr << "exec failed\n";
exit(1);
}
// parent, if we redirect stdout printf will send down pipe
close(1);
dup2(phppipefds[1],1); // write pipe on stdout
close(phppipefds[1]); // dont need 2 write descriptors
close(phppipefds[0]); // we dont need to read pipe
cout << "words \ngoing \ndown \npipe \nbeing \nsorted\n";
close(1); // must close pipe or sort will hang
wait(0);
//php = system("/Applications/MAMP/bin/php5/bin/php /Users/rickymills/webserver/pages/test.php");
//strcat(resp,);
//strcat(resp, php);
}
마지막 몇 줄은 내가이 일을하기 위해 모든 노력을 기울이는 곳입니다. 모두가 브라우저 창에 덤프
실제 부분은 바로 위의 코드 아래 :
write(connsock, resp, rd);
exit(1);
}
사람이 내가 브라우저 창에이를 얻을 수있는 방법 어떤 생각을 가지고 있습니까? 나는 최선의 방법은 PHP 출력을 변수로 가져 오는 것이고, connsock이 쓰기 전에 'resp'와 결합하는 것이 올바른지 생각해봤을 까?
감사합니다.