redirecting stdout/stderr on execl

Ask a Question related to UNIX Programming, Design and Development.

  1. #1

    Default redirecting stdout/stderr on execl

    consider the following code:

    ofstream logFile("out.txt");
    streambuf *outbuf = cout.rdbuf(logFile.rdbuf());
    streambuf *errbuf = err.rdbuf(logFile.rdbuf());

    cout << "this goes to log file\n";

    //out put from following command is NOT put in logFile
    execlp("echo", "echo", "hello there", (char*)0);

    How can I make the output of the command I exec be directed to that file
    too.

    Thanks,

    ~Shea M.

    shea martin Guest

  2. Similar Questions and Discussions

    1. #39215 [NEW]: Inappropriate close of stdin/stdout/stderr
      From: tstarling at wikimedia dot org Operating system: Linux & Windows PHP version: 5CVS-2006-10-20 (CVS) PHP Bug Type: ...
    2. Redirect stdout, stderr to file and stdout
      I have a small script that does some admin work for me. What I need to do now is not only have is display information to STDERR and STDOUT but...
    3. Run one process and get the stdout and stderr
      I need to run one program and get the stdout and stdin from it. If possible in real time. like: perl myscript.pl "perl -e 'foreach (1..5)...
    4. [PHP-DEV] STDOUT, STDERR not defined in CLI mode
      --=-jireo02uumYPe7EiBc0D Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi, sometimes STDIN, STDOUT and STDERR are not defined in...
    5. 1.8.0, fcgi and $stdout/$stderr
      --gBBFr7Ir9EOA20Yy Content-Type: text/plain; charset=us-ascii Content-Disposition: inline I have just been trying to get fcgi to run under...
  3. #2

    Default Re: redirecting stdout/stderr on execl

    I figured it out:


    #define STDOUT 1
    #define STDERR 2

    dup2(logFile.rdbuf()->fd(),STDOUT);
    dup2(logFile.rdbuf()->fd(),STDERR);

    shea martin wrote:
    > consider the following code:
    >
    > ofstream logFile("out.txt");
    > streambuf *outbuf = cout.rdbuf(logFile.rdbuf());
    > streambuf *errbuf = err.rdbuf(logFile.rdbuf());
    >
    > cout << "this goes to log file\n";
    >
    > //out put from following command is NOT put in logFile
    > execlp("echo", "echo", "hello there", (char*)0);
    >
    > How can I make the output of the command I exec be directed to that file
    > too.
    >
    > Thanks,
    >
    > ~Shea M.
    >
    shea martin Guest

  4. #3

    Default Re: redirecting stdout/stderr on execl

    In article <3F1C57FD.7080004@telus.net>,
    shea martin <samworks@telus.net> wrote:
    >I figured it out:
    >
    >
    >#define STDOUT 1
    >#define STDERR 2
    You should probabably make use of the standard macros STDOUT_FILENO and
    STDERR_FILENO from <unistd.h>.
    >dup2(logFile.rdbuf()->fd(),STDOUT);
    >dup2(logFile.rdbuf()->fd(),STDERR);
    --
    Barry Margolin, [email]barry.margolin@level3.com[/email]
    Level(3), Woburn, MA
    *** DON'T SEND TECHNICAL QUESTIONS DIRECTLY TO ME, post them to newsgroups.
    Please DON'T copy followups to me -- I'll assume it wasn't posted to the group.
    Barry Margolin Guest

  5. #4

    Default Re: redirecting stdout/stderr on execl

    I fugured that there must be such thing, but didn't see it. Thanks.

    Barry Margolin wrote:
    > In article <3F1C57FD.7080004@telus.net>,
    > shea martin <samworks@telus.net> wrote:
    >
    >>I figured it out:
    >>
    >>
    >>#define STDOUT 1
    >>#define STDERR 2
    >
    >
    > You should probabably make use of the standard macros STDOUT_FILENO and
    > STDERR_FILENO from <unistd.h>.
    >
    >
    >>dup2(logFile.rdbuf()->fd(),STDOUT);
    >>dup2(logFile.rdbuf()->fd(),STDERR);
    >
    >
    shea martin Guest

Posting Permissions

  • You may not post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139