dup2 filedescriptor redirecting output


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users dup2 filedescriptor redirecting output
# 1  
Old 01-21-2010
dup2 filedescriptor redirecting output

Code:
int redirect()
{
 int fd,rc;
 fd = open("sample.DAT",O_CREAT | O_RDWR , 00777 );
 rc = dup2(fd , 1 ) ;
 close (fd );
return 0;
}

I used the above to redirect all the cout statements to sample.DAT. process is redirecting the output and I had two questions

1. All stdout/cout statements for that current process will be redirected to sample.DAT. correct?

2. If the file is deleted in the middle of the redirection of stdout statements and if recreated that file manually it will not redirect the output?
To do redirection even if the file deleted do I have to recall redirect method? If I recall redirect method then what will happen to the existing duplicated filedescriptor. will that result more no of opened file descriptors?

Last edited by zaxxon; 01-21-2010 at 02:45 AM.. Reason: use code tags please, ty
# 2  
Old 01-21-2010
Quote:
1. All stdout/cout statements for that current process will be redirected to sample.DAT. correct?
yes.

Quote:
2. If the file is deleted in the middle of the redirection of stdout statements and if recreated that file manually it will not redirect the output?
Correct.

Quote:
To do redirection even if the file deleted do I have to recall redirect method?
yes, exactly.

Quote:
If I recall redirect method then what will happen to the existing duplicated filedescriptor. will that result more no of opened file descriptors?
dup2 close the newfd (here stdout) first. So you won't have descriptor leaks.

To conclude, a few remarks about your redirect:
- check whether the function open() and dup2() were successful or not.
- use the constant STDOUT_FILENO instead of 1 for dup2(). (this constant is defined in <unistd.h>)

HTH,
Loïc.
# 3  
Old 01-22-2010
dup2 file descriptor redirecting output

Thanks for your clarifications. Thank you and understood that before duplicating it will close the existing file descriptor "1" if any and duplicates new fd to 1.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Redirecting output using if with awk

I have this line were I am selecting some fields from one file and creating a new file for the selected data. awk -F "\"*,\"*" '{print $1"," $2}' folderone/list.txt > folderone/qlist.txt This works, but then from this new file I want it to create a new file where it separates data: $2 >5 it... (2 Replies)
Discussion started by: rluna
2 Replies

2. Shell Programming and Scripting

Redirecting output to file

Hi, I have created script which redirect the output to file.I am able to get the output in file but not in the format. Output :Content of the log which have 10 -15 lines. Actal :Line1 ..Line 2Line3 Line4 Line 5 Expected:Line1 Line 2 Line3 Please... (7 Replies)
Discussion started by: karthik771
7 Replies

3. Shell Programming and Scripting

Redirecting the output

For example, if we run the below command, symcfg list -thin -pool , results in an output most of the times and if the out is generated i'm able to redirect the output to a file. but sometimes it doesnt result any output and even though the output is being redirected, i can see "No Thin Pools "... (2 Replies)
Discussion started by: web2moha
2 Replies

4. Shell Programming and Scripting

redirecting output using if-then-else in awk

I am trying to filter records based on number of "|", delimiter in my application. If number of "|" is greater than 14 its a bad record, else its a good record. I have to redirect output to two different files based on the if-then-else evaluation in AWK. if number of “|” in file_0 > 14 ... (2 Replies)
Discussion started by: siteregsam
2 Replies

5. UNIX for Dummies Questions & Answers

redirecting script output

Hello, I am interested in taking the output from a script i wrote and using it as input to a different script i wrote. So for example i want to take the output from program2 and use it as a parameter for program1. I didnt think i could use the >> symbols because i think that is just for .txt... (4 Replies)
Discussion started by: GmGeubt
4 Replies

6. Shell Programming and Scripting

Redirecting output to file

Hi, Below is the whole string which is to be redirected to the new file. su - oracle -c "exp $user/$pass file=/oracle/oradata/backup/exp_trn_tables_`date +%d_%b_20%y_%H_%M_%S`.dmp log=/oracle/oradata/backup/exp_trn_tables_`date +%d_%b_20%y_%H_%M_%S`.log tables=table1,table2 statistics=none" ... (3 Replies)
Discussion started by: milink
3 Replies

7. Shell Programming and Scripting

help redirecting output from mailbot

Hello...I'm having problems redirecting output from a script from a mailbot. It is a perl script that has the email sent to op_shipper piped into it. I am receiving the email with sendmail and here is what my alias looks like for the script am I having problems with in /etc/aliases: ... (3 Replies)
Discussion started by: kuliksco
3 Replies

8. UNIX for Dummies Questions & Answers

Redirecting 'find' output...

Hi all, why does one version of this command work but not the other? - This file already exists with 644 mod permissions - I am logged in as d269836, no su rights. - Box is 'SunOS' running bash I think; but runs ksh scripts OK. This one works: find /users/d269836 -type f -name "*.txt"... (6 Replies)
Discussion started by: dan-e
6 Replies

9. Shell Programming and Scripting

Redirecting OUTPUT

Hi, I want to move the output of a command/script to a file as well as to to be displayed on stdout. Can anybody help me in this. Thanks in advace .. -Chanakya M (1 Reply)
Discussion started by: Chanakya.m
1 Replies

10. UNIX for Dummies Questions & Answers

Redirecting the startup output

Is there any way to redirect the output of the startup of a sun E250. Im basically trying to troubleshoot some init scripts and it would be useful to have a log of the startup output. (3 Replies)
Discussion started by: blakmk
3 Replies
Login or Register to Ask a Question