C에서 다른프로그램이 printf로 출력하는 모든 메세제지를 켑쳐

ulra의 이미지

C에서 다른프로그램이 printf로 출력하는 모든 메세제지를 켑쳐하는 방법 없나요?

한 프로그램이 있는데 계속해서 메세지를 printf로 출력합니다.

제가 만들고 싶은 프로그램은 위의 프로그램이 메세지를 출력할때마다

켑쳐해서 소켓으로 전송하는 프로그램을 만들려고 하는데요.

어떻게 프로그램을 만들어야 하나요?

mach의 이미지

1. printf를 출력하는 터미널의 tty 디바이스 파일을 알아본다.
2. 해당 tty를 수퍼유저로 연다.
3. 읽어서 소켓으로 전송한다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

vinus의 이미지

만약 제가 그런 상황에 처했다면, 다음과 같은 방법을 상용 하겠습니다.
먼저 네트웍으로 어떤 데이타를 전송해야 하는 프로그램에 외부 프로그램을 호출 할수
잇는 부분을 추가 합니다.
exec계열의 함수가 적당하것 같습니다. 이 부분에서 외부 프로그램을 호출 합니다.

그리고 호출 하기 이전에, 파이프와 fcntl()혹은 dup2()와 같은 것을 이용하여,
출력 파일 디스크립터를 바꾸어 주겠습니다.

즉 대충 생각 나는대로 프로그램소스를 만들어 보면 아래의 식이 되겠죠...

void function()
{
	int pfd[2]; /* 파이프 오픈 */
	int pid;
	char buf[1024];
	unsigned int size;
	
	pipe(pfd);
	dup2(pfd[0], 1);
	pid=fork()
	if(pid)
	{
		execvp(...);
	}
	else if(pid>0)
	{
		size=xx;
		sleep(1);
		read(pfd[1], buf, size);
		.....
	}
	else
	{
		return;
	}
}

아 죄송 합니다.
시간이 없어서... 대충 프로그램코드를 작성 했습니다.
저렇게 작성하면 동작할 꺼라고 생각은 하는데, 기억이....

어쨌던 개념은 이렇습니다.
외부 프로그램을 호출할때, 외부 프로그램의 출력 결과를 파이프를 이용하여,
호출한 프로그램에서 받아 들이겠다는 것입니다.

>>>행복한 웃음<<<

댓글 달기

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