[도움요청] cgi파일관련된 이상한 코드 해석좀

omando의 이미지

소스 분석중에 다음과 같은 이상한 이해안되는 구문이 있어서요.

....
main(int argc, char *argv[])
{
	char *path = "./Betting_GW.cgi";
	char *pidfile = "./gateway.pid";
	FILE *fd;
	int ret;
	int pid;

	while (1)
	{
		if ((pid = fork()) < 0)
		{
			continue;
		}

		if (pid == 0)
		{
			execl(path, "Betting_GW", (char *)0)  ;
		}
		else
		{
			fd = fopen(pidfile,"w");
			fprintf(fd, "%d\n", pid);
			fclose(fd);
		}

printf("\tProcess %s started... PID is %d\n", argv[1], pid);

		wait(&ret);

printf("\tProcess %s killed... now restart..\n", argv[1]);
	}
}

위 소스에서 execl(path, "Betting_GW", (char *)0) ;

가 무슨 효과를 바라는건지 도무지??

CGI파일이라는것은 WEP 프로그래밍 관련된 규약같은것이라고 알고 있는데

이화일내에서 Betting_GW를 실행한다???

참고로 제가 분석중인 프로젝트내는 Wep과는 별 관계없고요.

start.c --> 위 소스가 있는곳입니다.
Betting_GW.cgi
Betting_GW.c --> 여기에도 main()함수가 존재해요.
Betting_GW.h
...기타 많은 화일들로 구성되어있걸랑요

원 저작자가 cgi 파일을 어떤 의도로 사용했는지 알고 싶어
cgi파일을 열어보려고도 했지만 텍스트로 열리지를 않네요.

이건 어떻게 요리해야되는지요..
솔직히 cgi에 대해서 잘 모르는데 이것을 따로 공부해야 이해할 수있는건지요

new5244의 이미지

Quote:
execl(path, "Betting_GW", (char *)0) ;

효과라고 볼수 있나 모르겠는데...
execl 이 path 를 실행시키고
이때 argv[0] 에 "Betting_GW" 가 들어 가게 되니
ps 로 프로세스 리스트를 보면
execl 로 실행된 프로세스 이름에 Betting_GW 가 나타날 겁니다.

from saibi

huricool의 이미지

execl(path, "Betting_GW", (char *)0) ;

path 를 실행하면서 "Betting_GW" 를 argument 로 사용하게 됩니다.
그럼 즐 프하세요.

무인도에 갇힌다면 당신이 가지고 갈 세가지는?

wongi의 이미지

Quote:
원 저작자가 cgi 파일을 어떤 의도로 사용했는지 알고 싶어
cgi파일을 열어보려고도 했지만 텍스트로 열리지를 않네요.

$ gcc -o Betting_GW.cgi Betting_GW.c # some other options
를 통해 생성된 실행 파일일 것 같네요. 따라서 cgi 파일의 용도를 알아보려면 같은 이름의 c 파일을 열어보시면 되겠습니다.

Quote:
The Common Gateway Interface, or CGI, is a standard for external
gateway programs to interface with information servers such as HTTP servers.
--http://www.webthing.com/tutorials/cgifaq.1.html#1

위의 설명과 같이 웹서버(일반적으로)와 정보를 주고받기 위한 규약을 준수한다는 점만 제외하면 일반적인 실행 파일과 다를 바 없습니다.

KISS...
Keep It Small and Simple

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.