04-27-2010
Thanks pravin27. Unfortunately that didn't solve my problem. Adding the "! defined()" stops it from reading from a pipe if no file name is passed to it. Is there anyway to detect if a shell has redirected STDIN?
Last edited by ilikecows; 04-27-2010 at 07:10 AM..
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I use read often in scripts to filter the right part into a variable like:
$ print "abc cde efg" | read k l ; print "k=$k, l=$l"
k=, l=
This works on linux and unix versions I work with. On OSX 10.4 this
doesn't work. I found a workaround but would like to know
why the original line... (5 Replies)
Discussion started by: relyveld
5 Replies
2. Programming
Hi,
Can any one please help me with this. Am struggling hard to get a solution.
I am doing telnet through a C program and getting the stdout file descriptor of the remote machine to pipe.
read() function is getting data, But whenl it receives SOH character ie. ^A ( Start of heading = Console... (2 Replies)
Discussion started by: JDS
2 Replies
3. Programming
I know how to read and write if i have a forked process with only one child. However what is involved with reading and writing with many forked processes. Say one parent that forks 5 children, and needs to communicate with all 5 in half duplex.
int temp, counter=0;
do{
pipe(temp);
... (5 Replies)
Discussion started by: steveneliuk
5 Replies
4. Shell Programming and Scripting
last week i started learning perl, so have limited skill and knowledge.
why isn't 'die' being called and the script exiting before the 'directory created' line?
if (! -d "$logdir") {
system "mkdir -p $logdir" || die print "\nERROR: release log directory creation failed - $logdir: $!\n";... (4 Replies)
Discussion started by: mjays
4 Replies
5. Shell Programming and Scripting
two things.
why doesn't the 'die' message get displayed - "Error: release log directory creation failed..."?
why does the script name and line number get displayed despite the inclusion of a '\n'. apparently adding a newline prevents this from happening.
if (! -d "$logdir") {
use... (4 Replies)
Discussion started by: mjays
4 Replies
6. Shell Programming and Scripting
I have a file data_1.out which contains:
1|abc mail|mail subject|mail body
2|def mail|mail subject|def mail body
I am trying to read the variables from data_1.out and use them to print to 2 different files based on the id (first_column)
The problem is I am not able to read the file... (8 Replies)
Discussion started by: sol_nov
8 Replies
7. Shell Programming and Scripting
Hello,
I need to read the pipe data as:-
cat abc.txt | uuencode abc.txt | mailx -s hi xyz@xyz.com
I will override the mailx function so that when mailx is called, it calls my version of maix and in that function I want to read the file which is attached in progional mailx function- abc.txt... (7 Replies)
Discussion started by: shubh05
7 Replies
8. Shell Programming and Scripting
Hello,
I have an ffmpeg bash script which is working nice and
I need to do the same for other sources.
To create new scripts and to deal with multiple bash files sounds not logical. It is a bit hard to manage for me..
I wondered if it was possible to make my input file as variable.
Then I... (1 Reply)
Discussion started by: baris35
1 Replies
9. Shell Programming and Scripting
I have created a fifo named pipe in solaris, which writes the content of a file, line by line, into pipe as below:
$ mkfifo namepipe
$ cat books.txt
"how to write unix code"
"how to write oracle code"
$ cat books.txt >> namepipe &
I have a readpipe.sh script which reads the named... (2 Replies)
Discussion started by: naveen mani
2 Replies
10. UNIX for Beginners Questions & Answers
Hi All,
I'm creating a program which reads millions of bytes from the PIPE and do some processing. As the data is more, the idea is to read the pipe parallely.
Sun Solaris 8
See the code below:
#!/bin/sh
MAXTHREAD=30
awk '{print $1}' metadata.csv > nvpipe &
while
do
... (3 Replies)
Discussion started by: mr_manii
3 Replies
PIPE(2) System Calls Manual PIPE(2)
NAME
pipe - create an interprocess communication channel
SYNOPSIS
pipe(fildes)
int fildes[2];
DESCRIPTION
The pipe system call creates an I/O mechanism called a pipe. The file descriptors returned can be used in read and write operations. When
the pipe is written using the descriptor fildes[1] up to 4096 bytes of data are buffered before the writing process is suspended. A read
using the descriptor fildes[0] will pick up the data.
It is assumed that after the pipe has been set up, two (or more) cooperating processes (created by subsequent fork calls) will pass data
through the pipe with read and write calls.
The shell has a syntax to set up a linear array of processes connected by pipes.
Read calls on an empty pipe (no buffered data) with only one end (all write file descriptors closed) returns an end-of-file.
Pipes are really a special case of the socketpair(2) call and, in fact, are implemented as such in the system.
A signal is generated if a write on a pipe with only one end is attempted.
RETURN VALUE
The function value zero is returned if the pipe was created; -1 if an error occurred.
ERRORS
The pipe call will fail if:
[EMFILE] Too many descriptors are active.
[ENFILE] The system file table is full.
[EFAULT] The fildes buffer is in an invalid area of the process's address space.
SEE ALSO
sh(1), read(2), write(2), fork(2), socketpair(2)
BUGS
Should more than 4096 bytes be necessary in any pipe among a loop of processes, deadlock will occur.
4th Berkeley Distribution August 26, 1985 PIPE(2)