[질문]프로그램 내에서 다른 프로그램을 호출할때..

nidle의 이미지

제가 기존의 있더 프로그램을 그냥 사용하려고 하는데요.
새로 만든 프로그램 내에서 기존의 프로그램을 호출할때
기존의 프로그램이 콘솔화면으로 정보를 (문자열)를 출력한다면
이내용을 콘솔화면에 출력하지않고 새로운 프로그램의 스트링
변수에 저장할수있나요,,
가능하다면 어떤 함수를 사용해야될지 어디 참조할만한 곳이라도
있으면 알려주세요,,

그럼 오늘도 재미있는 하루 되세요,,,

익명 사용자의 이미지

nidle wrote:

제가 기존의 있더 프로그램을 그냥 사용하려고 하는데요.
...

오~ 새로짜기 귀차나서, 기존에 있던것을 쓰는것(재사용)을
최근 이데올로기로 '귀차니즘'이라고 합니다.

대충 시나리오는 다음과 같습니다.
1) fork()
2) pipe()
이렇게 해서 하는데,

귀차니즘으로 한큐에 해주는 것을 골라보니
3) popen()이란게 있더라.
예제짜기 귀차니즘에 빠질 수 있으니, 기존에 프로그램 ls를 내가 짰다고 가정하자. 이제 예제를 보면

#include <stdio.h>

main()
{
  FILE *fp;
  char line[1024];
   
  fp = popen("/bin/ls -l", "r"); // ls를 옛날에 짰다고 가정
				
  while ( fgets( line, sizeof line, fp)) // NULL이면 그 프로그램이(여기서는 ls) 종료되었다는것이지....
  {
    printf("%s", line);
  }
  pclose(fp);
}

* 참고 : 마우스로 긁어다가 돌리면 당장은 편하지만, 기억에 잘 안남아서, 나중에 다시 찾아보게 되고, 이는 귀차니즘을 위배하므로 직접 쳐서 돌려보시길.
[/code]

익명 사용자의 이미지

사실 기존의 있던 프로그램은 제가 만든것이 아니고 프리웨어 프로그램입니다.

이 프로그램을 실행하였을때 나오는 문자열(콘솔창으로요)을 제가 만드는 프로

그램에서 사용하려고 합니다. 콘솔에서 출력되는내용을 파일로 출력 가능하다

고 알고있습니다. 파일이 아닌 제 프로그램의 변수에 저장이 가능한지 알고싶습

니다. 그게 안된다면 중간에 파일을 만들어서 변수로 읽어들여야될것 같아서요,,

익명 사용자의 이미지

Anonymous wrote:
사실 기존의 있던 프로그램은 제가 만든것이 아니고 프리웨어 프로그램입니다.

어쨋거나, 귀차니즘은 맞는것 같습니다.
위 프로그램을 잘 보면, ls -l을 실행한 결과를(문자열)
line이라는 변수로(문자열 변수) 받고 있습니다.

단지 기존 프로그램 출력이 무지 길지 모르니까(?) 버퍼크기에 유의하고, 라인단위로 읽어(내부변수에 가지고 즉, line이라는 변수) 들여서 출력했으니, 그냥 쓰시면 될텐데, 답이 더 필요한가요?

익명 사용자의 이미지

기존에 쓰던 freeware실행프로그램명 : /usr/local/bin/mytest
라고 가정하면
fp = popen("/bin/ls -l", "r"); // ls를 옛날에 짰다고 가정

fp = popen("/usr/local/bin/mytest", "r"); // ls를 옛날에 짰다고 가정 로 바꾸고 돌리시면 그 결과가 line변수에 들어가서, 출력됩니다.

익명 사용자의 이미지

이제야 조금 이해가 가네요,,^^

귀챠니즘,,,ㅋㅋㅋ

댓글 달기

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