Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #164224
| 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> |
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 | Next — Previous in thread | Find similar | Unroll 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