Sponsored Content
Full Discussion: Pipe Functionality
Top Forums Shell Programming and Scripting Pipe Functionality Post 302560746 by amejoish on Friday 30th of September 2011 06:54:52 PM
Old 09-30-2011
Pipe Functionality

Hi,

I am trying to emulate the '|' functionality through pipe function call. I am passing the o/p of exec in parent as input to the exec in child. The buf is readin the o/p but the exec in child is not working. Can somebody checkout the code and point where am i going wrong or missing something.
Code:
ls | wc -l

Code:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/wait.h>

int main(){

int piped[2];//pipe descriptors
char buf[16 * 1024];
pid_t child;

if(pipe(piped)<0){
   fprintf(stderr,"pipe creation failed \n");
   exit(-1);
 }
 
 if((child = fork()) < 0){
 fprintf(stderr,"process creation failed \n");
 exit(-1);
 }
 
 else if(child == 0){
        close(piped[1]);//close the write end of child
         close(0);//close stdin
         if((dup2(piped[0],0)) < 0){//duplicate read end with stdin;
        fprintf(stderr,"duplication of pipe desc failed \n");
        exit(-1);
        }
        
              int linesrd = read(piped[0],buf,sizeof(buf));
        
        printf("The noof bytes read are %d \n",linesrd);
       
        if(linesrd < 0)
        fprintf(stderr,"Read error \n");
       
        
        buf[strlen(buf)-1] = '\0';
       
       char *buf1 = buf;
      execlp("wc","wc","-l",buf1,NULL); 
        //exit(1);
        }
        
        else{
        
        close(piped[0]);//close read end of pipe
        close(1);//close stdout
        if(dup2(piped[1],1) < 0){//duplicate write end with stdout
        fprintf(stderr," duplication error \n");
        exit(-1);
        }
        
        int w=execlp("ls","ls",NULL);
        
        close(piped[1]);
        
        if(w<0){
        fprintf(stderr,"Something went wrong \n");
        exit(-1);
        }
        
        wait(NULL);
        
        }
        
        return(0);
        }

output of code:
Code:
ameya@ameya-Dell-System-Inspiron-N4110:~/os_concepts$ The noof bytes read are 247 
wc: a.out
basic_shell
Chapter6.pdf
communication
eof.c
fork-wait-exec
l5.pdf
OS_scheduling
pipe
pipe1.c

Regards,
Ameya



Moderator's Comments:
Mod Comment Video tutorial on how to use code tags in The UNIX and Linux Forums.

Last edited by Franklin52; 10-01-2011 at 05:59 AM.. Reason: Please use code tags for data and code samples, thank you
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Date functionality

Hi, Could someone help me to get yesterday's date in MMDDYY format. echo `date '+%m%d%y'` is giving me today's date in the above format. Thanks in advance for your help.. Suresh. (1 Reply)
Discussion started by: svannala1
1 Replies

2. HP-UX

Functionality difference between HP-UX Release 10.20 and 11.00

Hi All, What is the difference with respect to functionality point of view, between HP-UX Release 10.20 and HP-UX Release 11.00? Does the if condition statement in the shell script behave differently in these two releases? (3 Replies)
Discussion started by: puspendu
3 Replies

3. Shell Programming and Scripting

Sed functionality

I have a few xml files and I want to input say 5 parameters within each file. is it possible to do so with sed? <parameter>A</parameter> <parameter>B</parameter> .... .... And so on. These parameters are meant to go in just inside: <?xml... (2 Replies)
Discussion started by: collern2
2 Replies

4. Shell Programming and Scripting

Restartibility Functionality....

Hello, I am trying to write a script that has a option of restarting the script from where it failed. I have to write a script called Batch.sh. This script has to run quite a few sql files as shown below: logcmd.sh -f test1.sql logcmd.sh -f test2.sql logcmd.sh -f test3.sql logcmd.sh -f... (4 Replies)
Discussion started by: rkumar28
4 Replies

5. UNIX for Dummies Questions & Answers

using functionality in another ksh

i have a function defined in one ksh i want to use the same functionality in another ksh i am using . ../<ksh name> but it is not picking that functionality what i have to do for the same (2 Replies)
Discussion started by: trichyselva
2 Replies

6. Shell Programming and Scripting

Replace pipe with Broken Pipe

Hi All , Is there any way to replace the pipe ( | ) with the broken pipe (0xA6) in unix (1 Reply)
Discussion started by: saj
1 Replies

7. Shell Programming and Scripting

using arrays and also help with array.contains functionality

here is what i have... i=1 while read line do if grep -i-q "create procedure"<<<$line then startline="$line" endline="blahblah" Get procedure name into a variable named procName procName="procedure name is stored" do some... (2 Replies)
Discussion started by: vivek d r
2 Replies

8. UNIX for Dummies Questions & Answers

Command Functionality

Hi everyone, today i need that someone help to understand this particular line of command. So you can explain to me step by step, it will be great. ---------- Post updated at 11:53 AM ---------- Previous update was at 11:51 AM ---------- (9 Replies)
Discussion started by: Newer
9 Replies

9. Shell Programming and Scripting

How to ignore Pipe in Pipe delimited file?

Hi guys, I need to know how i can ignore Pipe '|' if Pipe is coming as a column in Pipe delimited file for eg: file 1: xx|yy|"xyz|zzz"|zzz|12... using below awk command awk 'BEGIN {FS=OFS="|" } print $3 i would get xyz But i want as : xyz|zzz to consider as whole column... (13 Replies)
Discussion started by: rohit_shinez
13 Replies

10. UNIX for Dummies Questions & Answers

Zip -r Functionality

Hi , I've written the following code to zip the big file $dir_temp ="/home/etc/hst zip -r $dir_temp/file_nm.zip $dir_temp/file_nm The zip file has been created . When I try to UNZIP the file with the following command unzip file_nm.zip The file got unzipped but created in the... (3 Replies)
Discussion started by: smile689
3 Replies
All times are GMT -4. The time now is 12:05 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy