제가 기존의 있더 프로그램을 그냥 사용하려고 하는데요. 새로 만든 프로그램 내에서 기존의 프로그램을 호출할때 기존의 프로그램이 콘솔화면으로 정보를 (문자열)를 출력한다면 이내용을 콘솔화면에 출력하지않고 새로운 프로그램의 스트링 변수에 저장할수있나요,, 가능하다면 어떤 함수를 사용해야될지 어디 참조할만한 곳이라도 있으면 알려주세요,,
그럼 오늘도 재미있는 하루 되세요,,,
제가 기존의 있더 프로그램을 그냥 사용하려고 하는데요. ...
대충 시나리오는 다음과 같습니다. 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]
사실 기존의 있던 프로그램은 제가 만든것이 아니고 프리웨어 프로그램입니다. 이 프로그램을 실행하였을때 나오는 문자열(콘솔창으로요)을 제가 만드는 프로
그램에서 사용하려고 합니다. 콘솔에서 출력되는내용을 파일로 출력 가능하다
고 알고있습니다. 파일이 아닌 제 프로그램의 변수에 저장이 가능한지 알고싶습
니다. 그게 안된다면 중간에 파일을 만들어서 변수로 읽어들여야될것 같아서요,,
사실 기존의 있던 프로그램은 제가 만든것이 아니고 프리웨어 프로그램입니다.
단지 기존 프로그램 출력이 무지 길지 모르니까(?) 버퍼크기에 유의하고, 라인단위로 읽어(내부변수에 가지고 즉, line이라는 변수) 들여서 출력했으니, 그냥 쓰시면 될텐데, 답이 더 필요한가요?
기존에 쓰던 freeware실행프로그램명 : /usr/local/bin/mytest 라고 가정하면 fp = popen("/bin/ls -l", "r"); // ls를 옛날에 짰다고 가정
fp = popen("/bin/ls -l", "r"); // ls를 옛날에 짰다고 가정
fp = popen("/usr/local/bin/mytest", "r"); // ls를 옛날에 짰다고 가정 로 바꾸고 돌리시면 그 결과가 line변수에 들어가서, 출력됩니다.
fp = popen("/usr/local/bin/mytest", "r"); // ls를 옛날에 짰다고 가정
이제야 조금 이해가 가네요,,^^
귀챠니즘,,,ㅋㅋㅋ
텍스트 포맷에 대한 자세한 정보
<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]
Re: [질문]프로그램 내에서 다른 프로그램을 호출할때..
오~ 새로짜기 귀차나서, 기존에 있던것을 쓰는것(재사용)을
최근 이데올로기로 '귀차니즘'이라고 합니다.
대충 시나리오는 다음과 같습니다.
1) fork()
2) pipe()
이렇게 해서 하는데,
귀차니즘으로 한큐에 해주는 것을 골라보니
3) popen()이란게 있더라.
예제짜기 귀차니즘에 빠질 수 있으니, 기존에 프로그램 ls를 내가 짰다고 가정하자. 이제 예제를 보면
* 참고 : 마우스로 긁어다가 돌리면 당장은 편하지만, 기억에 잘 안남아서, 나중에 다시 찾아보게 되고, 이는 귀차니즘을 위배하므로 직접 쳐서 돌려보시길.
[/code]
^^ 답변감사합니다.. 제가 질문을 조금 잘못쓴거 같아서요
사실 기존의 있던 프로그램은 제가 만든것이 아니고 프리웨어 프로그램입니다.
이 프로그램을 실행하였을때 나오는 문자열(콘솔창으로요)을 제가 만드는 프로
그램에서 사용하려고 합니다. 콘솔에서 출력되는내용을 파일로 출력 가능하다
고 알고있습니다. 파일이 아닌 제 프로그램의 변수에 저장이 가능한지 알고싶습
니다. 그게 안된다면 중간에 파일을 만들어서 변수로 읽어들여야될것 같아서요,,
Re: ^^ 답변감사합니다.. 제가 질문을 조금 잘못쓴거 같아서요
어쨋거나, 귀차니즘은 맞는것 같습니다.
위 프로그램을 잘 보면, ls -l을 실행한 결과를(문자열)
line이라는 변수로(문자열 변수) 받고 있습니다.
단지 기존 프로그램 출력이 무지 길지 모르니까(?) 버퍼크기에 유의하고, 라인단위로 읽어(내부변수에 가지고 즉, line이라는 변수) 들여서 출력했으니, 그냥 쓰시면 될텐데, 답이 더 필요한가요?
Re: [질문]프로그램 내에서 다른 프로그램을 호출할때..
기존에 쓰던 freeware실행프로그램명 : /usr/local/bin/mytest
라고 가정하면
fp = popen("/bin/ls -l", "r"); // ls를 옛날에 짰다고 가정
fp = popen("/usr/local/bin/mytest", "r"); // ls를 옛날에 짰다고 가정
로 바꾸고 돌리시면 그 결과가 line변수에 들어가서, 출력됩니다.아 정말 감사합니다..
이제야 조금 이해가 가네요,,^^
귀챠니즘,,,ㅋㅋㅋ
댓글 달기