Sponsored Content
Top Forums Shell Programming and Scripting can't close stdin/stdout in shell Post 302396430 by Corona688 on Thursday 18th of February 2010 11:40:34 AM
Old 02-18-2010
can't close stdin/stdout in shell

Code:
#!/bin/sh
exec 0</dev/null
exec 1>/dev/null

ls -l /proc/self/fd >&2

produces
Code:
total 0
lr-x------ 1 tyler users 64 Feb 18 10:38 0 -> /proc/7886/fd
lrwx------ 1 tyler users 64 Feb 18 10:38 1 -> /dev/pts/4
lrwx------ 1 tyler users 64 Feb 18 10:38 2 -> /dev/pts/4

I've verified the shell is actually redirecting stdout as expected, but when I run ls it is not inheriting this change. If I leave out the >&2, it produces no output, meaning it's only re-redirecting stdout to my console when I don't redirect stdout into stderr -- in other words, it only redirects stdout back to the console when I tell it not to use stdout at all! Why is it restoring stdout at all?

Last edited by Corona688; 02-18-2010 at 12:58 PM.. Reason: fix typos in source
 

10 More Discussions You Might Find Interesting

1. Programming

C++ How to use pipe() & fork() with stdin and stdout to another program

Hi, Program A: uses pipe() I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using: * child -> dup2(fd, STDOUT_FILENO); -> execl("/path/PROGRAM B", "PROGRAM B", NULL); * parent -> char line; -> read(fd, line, 100); Question:... (2 Replies)
Discussion started by: vvaidyan
2 Replies

2. Shell Programming and Scripting

Wrapper script for image deployment - stdin/stdout - named pipes and the like

Hi everyone, first post here. Anyone who isn't interested in the background, press pagedown :). I sometimes need to make scripts for little things I need in the infrastructure at the company I work at. Currently I am trying to make a wrapper script for a proprietary image-deployment program.... (2 Replies)
Discussion started by: andreas.ericson
2 Replies

3. Programming

stdout/stdin + flushing buffers

Hi all I've run into a snag in a program of mine where part of what I entered in at the start of run-time, instead of the current value within printf() is being printed out. After failing with fflush() and setbuf(), I tried the following approach void BufferFlusher() { int in=0;... (9 Replies)
Discussion started by: JamesGoh
9 Replies

4. UNIX for Dummies Questions & Answers

Redirect stdin stdout to multiple files

Hi, i know how to a) redirect stdout and stderr to one file, b) and write to two files concurrently with same output using tee command Now, i want to do both the above together. I have a script and it should write both stdout and stderr in one file and also write the same content to... (8 Replies)
Discussion started by: ysrini
8 Replies

5. Shell Programming and Scripting

Redirecting stdin/stdout to/from command from/to string

Hi, I am working on a project where I have to generate and execute nasm code on-the-fly. I generate the code in a file program.asm and then execute it.This output is to stdout which i redirect to an output file which i read back to compare results: system("nasm -f elf program.asm >... (5 Replies)
Discussion started by: doc_cypher
5 Replies

6. Programming

Controlling a child's stdin/stdout (not working with scp)

All, Ok...so I know I *should* be able to control a process's stdin and stdout from the parent by creating pipes and then dup'ing them in the child. And, this works with all "normal" programs that I've tried. Unfortunately, I want to intercept the stdin/out of the scp application and it seems... (9 Replies)
Discussion started by: DreamWarrior
9 Replies

7. Programming

read and write stdin/stdout in unix

Hi, i am using the below program to read from the standard input or to write to standard out put. i know that using highlevel functions this can be done better than what i have done here. i just want to know is there any other method by which i find the exact number of characters ( this... (3 Replies)
Discussion started by: MrUser
3 Replies

8. UNIX for Dummies Questions & Answers

STDIN and STDOUT

Hallo, i have a script like: if ;then echo "OK" else echo "ERROR $2 is missing" fi; if ;then touch $2 fi; if ;then cat $1 | grep xy > $2 (1 Reply)
Discussion started by: eightball
1 Replies

9. UNIX for Advanced & Expert Users

How to set font color for STDIN,STDOUT and STDERR?

I want to differentiate the STDOUT and STDERR messages in my terminal . If a script or command is printing a message in terminal I want to differentiate by colors, Is it possible ? Example: $date Wed Jul 27 12:36:50 IST 2011 $datee bash: datee: command not found $alias ls alias... (2 Replies)
Discussion started by: ungalnanban
2 Replies

10. Shell Programming and Scripting

[stdin / stdout] Strategies for redirecting outputs

Well.. let's say i need to write a pretty simple script. In my script i have 2 variables which can have value of 0 or 1. $VERBOSE $LOG I need to implement these cases: ($VERBOSE = 0 && $LOG = 0) => ONLY ERROR output (STDERR to console && STDOUT to /dev/null) ($VERBOSE = 1... (5 Replies)
Discussion started by: Marmz
5 Replies
ICECREAM(1)							     icecream							       ICECREAM(1)

NAME
icecream - download icecast and shoutcast streams, redirecting all fetched content to stdout and/or to disk at the same time SYNOPSIS
icecream [OPTIONS] URL [URL..] DESCRIPTION
icecream is a lightweight, non-interactive, stream download utility. It connects to icecast and shoutcast servers or direct stream URLs, and redirects all fetched content to stdout and/or to media files on your disk. Listen to the stream piping the output to a stdin-capable media player. Save the stream to a named file or split it into different tracks. It is possible to redirect the stream and save it to disk at the same time. icecream is able to parse pls and m3u playlists, and to download mp3 and ogg direct stream URLs. If the stream is anonymous it will be saved as 'stream-time.mp3', where time is actual timestamp. OPTIONS
-h, --help Print a help message describing all options -q, --quiet Turn off output -v, --verbose Be verbose -t, --tracks Split stream into tracks (if possible) --name=NAME Save the stream to file specified by NAME. Format codes starting with "%" will be replaced. See the date command for valid format codes. --stop=N[units] Stop downloading the stream after N kb/mb/min/songs --user-agent=AGENT Set user-agent header to AGENT --stdout Output stream to stdout (implies -q) --sync Turn syncing on, required for some mpeg players that read from stdin --debug Turn on debugging outputs EXAMPLES
Streaming to mpg123 icecream --stdout http://radio.com/playlist.pls | mpg123 - Split stream into different tracks icecream -t http://metal.org/radio.pls Split stream into tracks and play with vlc at the same time icecream -t --stdout http://streaming.com/playlist.pls | vlc file:/dev/stdin Prepare a 74 minute CD icecream -t --stop 74min http://trace.net/playlist.m3u Use a filename with today's date as output icecream -q --name 'radio_%Y_%m_%d' --stop 60min http://radio.com/playlist.pls BUGS
You are welcome to send bug reports about icecream to our mailing list. Feel free to visit http://icecream.sourceforge.net AUTHOR
Written by Gil Megidish <gil at megidish.net> 1.3 2008-04-28 ICECREAM(1)
All times are GMT -4. The time now is 09:19 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy