[ale]Stupid pipe question

Joe Steele joe at madewell.com
Fri Nov 30 18:19:20 EST 2001

The code as modified below should work.


-----Original Message-----
From:	Chris Fowler [SMTP:cfowler at outpostsentinel.com]
Sent:	Friday, November 30, 2001 4:24 PM
To:	Ale
Subject:	[ale]Stupid pipe question

I'm trying to implement a simple pipe to more in a shell I'm creating.  I ahve some test code below 
vut is seems not to behave the way I expect.  It appears more does some
ioctls() on stdin which in my code is really a pipe.  What is the correct way I should do this?

#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
/* needed for wait() */
#include <sys/wait.h>

main(int argc, char *argv[])
        int pfd[2];
        int pid;
        int count; /* bytes read from input */
        char buffer[1024];


        pid = fork();

        if(pid == 0)
                dup2(pfd[0], 0);
/* putting this read() here doesn't make sense */
/*              read(0, buffer, sizeof(buffer));*/
                execl("/bin/more", "/bin/more", 0);


        dup2(pfd[1], 1);
/* this while loop needs refining
 *      while(read(0, buffer, sizeof(buffer)) > 0)
 *              write(1, buffer, strlen(buffer));
        while((count=read(0, buffer, sizeof(buffer))) > 0)
                write(1, buffer, count);
/* need to close all the descriptors for the pipe so "more" sees EOF */
/* need to wait for the child to exit */

        return 0;

This message has been sent through the ALE general discussion list.
See http://www.ale.org/mailing-lists.shtml for more info. Problems should be 
sent to listmaster at ale dot org.

More information about the Ale mailing list