[완료] cgi 에서 실행가능한 프로그램을 돌리게 하는 방법이 없나요?

handsomejuno의 이미지

아래 올렸던 질문인데 답을 아직 못 찾고 있어 이렇게 추가된 질문과 함께 글을 올립니다.

--------------------------------------------------------------------------

C로 cgi를 짜고 있습니다.

fill out form 에서 input으로 쿼리 스트링을 받아서

입력된 값만 가져와서 그 값으로 구글에서 검색된 결과 url주소로 만들고

그걸 이용해서 구글 검색결과 html 을 받아 오고 다시 웹브라우져에 일부분 출력하고 싶습니다.

cgi 를 이용하지 않고 C로 바로 돌리면(execlp사용) html 파일 저장되는 것을 확인 했습니다.

그런데 cgi를 통해서 하면 에러가 나네요ㅠ_ㅠ

고수님들의 좋은 방법과 방향 제시 부탁드립니다.

혹시 cgi 에서 exec 나 system 함수 사용하기 위해 바꿔 줘야 하는 환경설정등이 있나요?

---------------------------------------------------------------------------

라고 글을 올렸었구요. 고민하다가 생각해 낸 방법으로 유닉스에서 c로 짠 프로그램을 수행 시키면

html파일을 잘 가져오길래 이렇게 가능한 파일을 하나 만들어 놓고

cgi 프로그램이 위 실행 파일을 수행할 수 있는지 방법도 생각해 보았습니다.

가능한 방법이 없을까요?

system("./a.out");

이런식으로 호출하면 될 것 같았는데, 그 결과는 나타나지 않더군요, 혹은 인터널 에러 ㅠ_ㅠ

cgi로는 이것이 불가능 한 걸까요?

php나 asp를 공부해서 하는것이 지금 고생하는 것 보다 빠르려나요?

도움 부탁드립니다.

cinsk의 이미지

CGI로 실행한다는 것은, HTTP daemon이 실행한다는 뜻입니다. 따라서 직접 실행했을 때와, CGI로 실행될 때와 프로세스 소유자(effective user ID)가 다릅니다.

프로그램에서 파일을 저장한다고 말하셨는데, CGI로 실행했을 때, 아마도 저장할 위치에 대한 권한이 없어서 저장이 안 된 것이 아닌가 합니다.

일단 저장을 /tmp와 같이 아무나 읽고 쓸 수 있는 공간에 해 보고, 된다면 프로그램은 이상 없는 것입니다. 이 후에, (저장할 공간에) HTTP daemon이 읽고 쓸 수 있는 권한을 주면 됩니다. 아니면 CGI 프로그램에 setuid bit을 설정하는 것도 괜찮습니다.

자세한 것은 man chmod, 더 자세한 것은 info libc user를 참고하기 바랍니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

vamf12의 이미지

혹시나 싶어서.. 드리는 말씀인데.

결과를 출력할때, http헤더는 넣어 주셨나요?

Content-type: text/html; charset=utf-8 \r\n\r\n

이부분이 가장 첫줄에 들어 가야 합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.