멍청한 질문입니다만....

MackTheKnife의 이미지

웹에서 시스템의 프로세스를 호출하여 결과를 return받을려고하면
어떻게 웹개발을 하여야할까여?

case)
1.웹으로 유저가 request를 보낸다
2.웹서버에서 시스템에 있는 프로세스 A 에 유저가 보낸 데이터를 넘겨준다.
3.프로세스 A가 처리가 끝날때까지 기다린다
4.처리결과를 웹페이지에 뿌려준다.

첨에는 XML-RPC를 이용하여 유저가 xml-rpc로 웹서버에 request를 날리는것으로 할려고했으나 약간의 문제가 있어서 접었읍니다.
웹프로세스와 프로세스 A간에는 IPC를 이용하여 데이터를 주고받을려고 합니다.

어떤 language(cgi,jsp,servlet,php등) 로 어떤방식(시스템의 프로세스를 콜)을 이요하여 server side개발을 하는게 좋을까여..?
java로 시스템프로세스틀 콜해서 리턴값을 받는게 가능할까여?..API를 찾아봐도 콜만있지 Return을 받을순없더군여 할려면.자바로 RPC를 구현해야될것같구..쩝..

cgi로 하면 간단히 해결될것같구여..cgi말고느 Php에서도 이게 가능한가여?

불량청년의 이미지

저도 그런 프로그램을 만들었었는데...

전 cgi를 이용하는 방식을 썼습니다.

cgi에서 qDecoder를 사용해서 바로 웹페이지로

결과값을 출력하게 하거나, cgi에서 특정 프로그램을

실행시켜 결과값을 파이프로 읽어 출력한다던지...

그런 방법이 있었던거 같네요.

일단, php및 기타 인터프리터 언어을 쓰게 되므로

생기는 오버헤드가 싫어서...

뭐~ cgi도 마찬가지 겠지만요. ㅡ,.ㅡ;

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

whatisid의 이미지

php를 사용하시면 exec 함수가 있는데요. 결과값을 배열로 돌려줍니다.

string exec ( string command [, string array [, int return_var]])

다음 링크를 참고하세요.
http://kr.php.net/manual/kr/function.exec.php

ㅡ,.ㅡ;;의 이미지

tacstar wrote:
저도 그런 프로그램을 만들었었는데...

전 cgi를 이용하는 방식을 썼습니다.

생기는 오버헤드가 싫어서...

뭐~ cgi도 마찬가지 겠지만요. ㅡ,.ㅡ;

vi 도 실행되나요?ㅡ,.ㅡ;;
또는 telnet 도 실행되나요?


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

fender의 이미지

MackTheKnife wrote:

java로 시스템프로세스틀 콜해서 리턴값을 받는게 가능할까여?..API를 찾아봐도 콜만있지 Return을 받을순없더군여 할려면.자바로 RPC를 구현해야될것같구..쩝..

자바의 경우 Runtime에서 Process만들어서 호출하고 여기서 InputStream 뽑아서 뿌리면 결과값을 얻을 수 있습니다.

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

불량청년의 이미지

Quote:
vi 도 실행되나요?ㅡ,.ㅡ;;
또는 telnet 도 실행되나요?

다 됩니다. 직접 해보세요. rebooting도 될껄요~

질문의 의도가 궁금하네요. 진정 몰라서 질문을 하는 것인지,

장난을 하시는 것인지... 8)

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

ㅡ,.ㅡ;;의 이미지

tacstar wrote:
Quote:
vi 도 실행되나요?ㅡ,.ㅡ;;
또는 telnet 도 실행되나요?

다 됩니다. 직접 해보세요. rebooting도 될껄요~

질문의 의도가 궁금하네요. 진정 몰라서 질문을 하는 것인지,

장난을 하시는 것인지... 8)

장난하는게 아니거든요.. 어떻게 하셨는지 궁금해서 입니다.

일반 ls 명령이라면 실행후 결과를 웹으로 뿌려 줄수가 있겠죠..

그런데 vi 라면 어떻게 되나요? vi가 실행후 vi내부에서 계속적인 편집이

일어나야하는데 이게 가능한가요?

또한 telnet 같은경우 이거 로그인도 어려울꺼 같은데요.. 설마 로그인이 되었다 해도.. 현제 telnet 에서 일어나는 일을 어떻게 실시간으로 전달한다는거죠?

telnet 의경우 연결지속형인데.. 웹은 그렇지 않자나요.. 그런데 어떻게 telnet 에서 일어나는 일들을 수시로 알려줄수가 있는지요..

그방법이 도데체 어떻게 되는지 무척궁금하군요.. 알려주시겠어요?


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

hyunuck의 이미지

ㅡ,.ㅡ;; wrote:
tacstar wrote:
Quote:
vi 도 실행되나요?ㅡ,.ㅡ;;
또는 telnet 도 실행되나요?

다 됩니다. 직접 해보세요. rebooting도 될껄요~

질문의 의도가 궁금하네요. 진정 몰라서 질문을 하는 것인지,

장난을 하시는 것인지... 8)

장난하는게 아니거든요.. 어떻게 하셨는지 궁금해서 입니다.

일반 ls 명령이라면 실행후 결과를 웹으로 뿌려 줄수가 있겠죠..

그런데 vi 라면 어떻게 되나요? vi가 실행후 vi내부에서 계속적인 편집이

일어나야하는데 이게 가능한가요?

또한 telnet 같은경우 이거 로그인도 어려울꺼 같은데요.. 설마 로그인이 되었다 해도.. 현제 telnet 에서 일어나는 일을 어떻게 실시간으로 전달한다는거죠?

telnet 의경우 연결지속형인데.. 웹은 그렇지 않자나요.. 그런데 어떻게 telnet 에서 일어나는 일들을 수시로 알려줄수가 있는지요..

그방법이 도데체 어떻게 되는지 무척궁금하군요.. 알려주시겠어요?

웹의 특징중 하나가 지속적인 연결을 하지 않는다는 겁니다.
즉, 명령어를 한번 실행하고 결과를 받아오면 연결이 끊어진다는 얘기지요.
그래서 세션이나 쿠키같은게 등장한겁니다.
우선 기본적으로 웹에 대한 이해가 필요하실듯 합니다.

결론을 말씀드리자면 세션이나 쿠키를 이용해도 님이 원하시는 작업같은건 할수가 없습니다. 애초에 그런 의도로 개발된 기술이 아니니깐요....

님이 원하시는건 지속적인 연결을 하며 서버와 통신하는 방법인데
좀더 수준높은 문서들을 찾아봐야 할 듯 합니다.

불량청년의 이미지

제가 님의 말투를 장난식으로 해석 했습니다.

죄송합니다.

질문을 처음부터 위에처럼 하셨다면 그러지 않았을 껍니다.

아뭍은 swimmingly님이 말씀하신것 처럼 HTTP의 프로토콜의

특성상 바로 커넥션이 끊어지게 됩니다.

만약 cgi로 vi를 실행시키게 되면 swp파일이 바로 남게 됩니다.

왜냐면 vi를 실행시킨 후, cgi는 바로 종료되기 때문이죠.

vi실행시키고 터미널 창을 바로 닫으면 swp파일 남는것과 같죠.

또한 웹페이지엔 vi에서 표준출력으로 뿌려준 경고메시지가 출력되게

됩니다.

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

ㅡ,.ㅡ;;의 이미지

Quote:

결론을 말씀드리자면 세션이나 쿠키를 이용해도 님이 원하시는 작업같은건 할수가 없습니다. 애초에 그런 의도로 개발된 기술이 아니니깐요....

님이 원하시는건 지속적인 연결을 하며 서버와 통신하는 방법인데
좀더 수준높은 문서들을 찾아봐야 할 듯 합니다.

예.. 제말이 그말이죠.. 쉽게 되지 않을꺼란 말이죠..제가 지금구현하려는건 아니고요..
단지 아주 간단히되었다면.. 그방법이 궁금했던겁니다..
난왜그렇게 어렵게 구현하려했던가.. 생각이 되어서요.. 내가 모르는 다른방법이 있나 싶었죠..

tacstar wrote:
제가 님의 말투를 장난식으로 해석 했습니다.

죄송합니다.

질문을 처음부터 위에처럼 하셨다면 그러지 않았을 껍니다.

아뭍은 swimmingly님이 말씀하신것 처럼 HTTP의 프로토콜의

특성상 바로 커넥션이 끊어지게 됩니다.

만약 cgi로 vi를 실행시키게 되면 swp파일이 바로 남게 됩니다.

왜냐면 vi를 실행시킨 후, cgi는 바로 종료되기 때문이죠.

vi실행시키고 터미널 창을 바로 닫으면 swp파일 남는것과 같죠.

또한 웹페이지엔 vi에서 표준출력으로 뿌려준 경고메시지가 출력되게

됩니다.

음.. 장난식.....ㅡ,.ㅡ;;
어쨋든.. 결국 님의말은 vi를 제대로 사용할수가 없다는 말씀이군요.
텔넷도마찬가지고요..

전님이 웹으로 vi나 텔넷도 다된다고 해보라고 하시길래.. 놀랬습니다..
현제 님이 구현한것도 그건 안되는거 맞죠?


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

불량청년의 이미지

Quote:
전님이 웹으로 vi나 텔넷도 다된다고 해보라고 하시길래.. 놀랬습니다..
현제 님이 구현한것도 그건 안되는거 맞죠?

음... 제가 의미를 잘 못 전달한 것도 있긴 있군요.

Quote:
vi 도 실행되나요?ㅡ,.ㅡ;;
또는 telnet 도 실행되나요?

실행된다는 뜻으로 말을 했습니다. 님이 그렇게 질문 했으니...

질문하는 방법을 좀 배우는게 좋을듯 하군요.

아뭍은, 보통 cgi에서 시스템 프로그램을 실행시킬 땐, 거의

바로 결과물을 확인 할 수 있는 프로그램들을 쓰게 됩니다.

보통 cgi로 어떤것이 된다고 말하면 사람들은 알아서 인식을 하던데...

님의 발상이 정말 참신하군요.

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

ㅡ,.ㅡ;;의 이미지

tacstar wrote:

실행된다는 뜻으로 말을 했습니다. 님이 그렇게 질문 했으니...

음.. ㅡㅡ;; 오류가 나는 실행도.. "실행이 된다"라고 말씀하신다는거군요..

tacstar wrote:

질문하는 방법을 좀 배우는게 좋을듯 하군요.

님의 발상이 정말 참신하군요.

ㅡ,.ㅡ;;

질문방법보다 질문할곳을 배우는게 낮겠네요..^^;;


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

byung82의 이미지

웹에서 vi던지 telenet 사용도 가능합니다

단 pipe 통신을 해야 합니다.

php나 C/C++에서는 popen으로 여신후

fread나 fgets로 하시면 stdout으로 출력하는 문자열은 다 받을 수 있고

vi 같은경우 fwrite 나 fputs로 문자를 보내 줄 수 있습니다.

그럼

ㅡ,.ㅡ;;의 이미지

byung82 wrote:
웹에서 vi던지 telenet 사용도 가능합니다

단 pipe 통신을 해야 합니다.

php나 C/C++에서는 popen으로 여신후

fread나 fgets로 하시면 stdout으로 출력하는 문자열은 다 받을 수 있고

vi 같은경우 fwrite 나 fputs로 문자를 보내 줄 수 있습니다.

그럼

연결지속형으로 구현한뒤에..
vi 는 그렇게 사용가능할꺼 같은데.. telnet 의 경우 보안때문인지..
패스워드가 입력되는것이 터미널에의한 입력이 아니면..
먹지않았던거 같은데.. 되던가요..
(장난이 아니고.. 몰라서 물어보는거거든요..ㅡ,.ㅡ;;
요즘에 묻기도 겁나네요....)


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

neohwang의 이미지

vi 나 telnet의 경우는 사용하실 수 없습니다.

즉, 웹에서 명령을 내린것은 즉시 종료되는 명령만 사용가능합니다.

따라서.. 그런 사용할 수 없는 명령어는 사용하지 말고 피해 가시면 안될까요?

예를 들어 vi 의 어떤 내용이 필요하다면 cat 과 grep 을 이용하시고 하면 안될까요?
수정해야 된다면 awk 인라인 커맨드를 이용하여 하시면 안될까요?

댓글 달기

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