Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #164224

Re: pipe a buffer to a program's stdin using popen

From John Forkosh <forkosh@panix.com>
Newsgroups comp.lang.c
Subject Re: pipe a buffer to a program's stdin using popen
Date 2022-01-02 17:51 +0000
Organization PANIX Public Access Internet and UNIX, NYC
Message-ID <sqsona$fmk$1@reader1.panix.com> (permalink)
References <sqp79k$po6$1@reader1.panix.com> <sqs7a1$o59$1@dont-email.me>

Show all headers | View raw


Lew Pitcher <lew.pitcher@digitalfreehold.ca> wrote:
> John Forkosh wrote:
>> Suppose I have a program that, in part, runs another program
>> using FILE *outptr=popen("some command string","r") and then
>> fread()'s its stdout from outptr. Now, if that other program
>> is otherpgm which reads input from its stdin, and I also want
>> that input to come from a file inputfile, then I could easily
>> just write  FILE *outptr=popen("cat inputfile|otherpgm","r");
>> 
>> But here's the rub: rather than some inputfile on disk, my
>> program has an internal  unsigned char buffer[9999]  which is
>> what I want piped to otherpgm, but which I don't want written
>> to disk first. How can I get buffer piped to otherpgm's stdin
>> using popen()? Or some other mechanism, as long as I can read
>> otherpgm's stdout from within my program.
> 
> Assuming a Unix-like environment,
>   pipe() to create a pair of unidirectional pipes
>   fork() to create a child process
>   in parent, close() the [0] pipe, and write() your data to the [1] pipe
>   in child, close(STDIN_FILENO), dup() the [1] pipe, and then exec() your
>      target "some command string" executable
> If you want, we can have a more detailed discussion on comp.unix.programmer

Thanks, Lew, that looks like a real good synopsis, modulo Kenny's
pipe size followup remark which might pose a problem. Let me take
another look through APUE with your synopsis in mind, and maybe I
can figure it out from there without too much more detailed disc-
ussion. Google, e.g.,
    http://unixwiz.net/techtips/remap-pipe-fds.html
also turned up what seems to be some useful discussion.

And, again, apologies to those (as Kenny put it), "Not-Cs in this
group". However, I did notice a whole bunch of "Beautiful Russian
Women" posts (from "outpost season") in comp.unix.programmer, and
nobody seemed to be complaining much. I suppose beautiful Russian
women are just more interesting than Unix pipes. (Maybe we should
instead be discussing their 'stdin's and 'stdout's?:)
-- 
John Forkosh  ( mailto:  j@f.com  where j=john and f=forkosh )

Back to comp.lang.c | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

pipe a buffer to a program's stdin using popen John Forkosh <forkosh@panix.com> - 2022-01-01 09:35 +0000
  Re: pipe a buffer to a program's stdin using popen Mark Bluemel <mark.bluemel@gmail.com> - 2022-01-01 03:22 -0800
    Re: pipe a buffer to a program's stdin using popen Meredith Montgomery <mmontgomery@levado.to> - 2022-01-01 11:21 -0300
    Re: pipe a buffer to a program's stdin using popen John Forkosh <forkosh@panix.com> - 2022-01-02 09:34 +0000
  Re: pipe a buffer to a program's stdin using popen Kaz Kylheku <480-992-1380@kylheku.com> - 2022-01-01 19:51 +0000
    Re: pipe a buffer to a program's stdin using popen gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-01 21:00 +0000
      Re: pipe a buffer to a program's stdin using popen John Forkosh <forkosh@panix.com> - 2022-01-02 09:12 +0000
    Re: pipe a buffer to a program's stdin using popen John Forkosh <forkosh@panix.com> - 2022-01-02 09:30 +0000
      Re: pipe a buffer to a program's stdin using popen Kaz Kylheku <480-992-1380@kylheku.com> - 2022-01-03 00:03 +0000
        Re: pipe a buffer to a program's stdin using popen John Forkosh <forkosh@panix.com> - 2022-01-03 08:07 +0000
          Re: pipe a buffer to a program's stdin using popen Manfred <noname@add.invalid> - 2022-01-03 22:54 +0100
  Re: pipe a buffer to a program's stdin using popen Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-01 15:00 -0800
    Re: pipe a buffer to a program's stdin using popen gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-02 00:01 +0000
  Re: pipe a buffer to a program's stdin using popen Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2022-01-02 12:54 +0000
    Re: pipe a buffer to a program's stdin using popen gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-02 14:54 +0000
      Re: pipe a buffer to a program's stdin using popen Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2022-01-02 15:37 +0000
      Re: pipe a buffer to a program's stdin using popen John Forkosh <forkosh@panix.com> - 2022-01-02 18:00 +0000
        Re: pipe a buffer to a program's stdin using popen gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-02 18:03 +0000
    Re: pipe a buffer to a program's stdin using popen John Forkosh <forkosh@panix.com> - 2022-01-02 17:51 +0000

csiph-web