Sponsored Content
Top Forums Programming Is this a legal close-on-exec-move? Post 302125865 by Perderabo on Sunday 8th of July 2007 01:30:30 PM
Old 07-08-2007
Well, but if a process is running out of fd's, it will never be due to the use of fork(). fork() creates a new process and the new process has its own set of newly created fd's. But the number of fd's in the original process does not grow. And while exec() can indeed close a fd if the close-on-exec bit was set, exec() does not have an "open-on-exec" concept. On the other hand, those dup2() do not look right. And dup2() can indeed add an fd to a process. We do not see how STDIN_FILENO and STDOUT_FILENO are defined so we can't be sure of what is happening. The return code from dup2 is being discarded so we don't know if the calls worked or not. I'm worried that this code might effectively be:
dup2(0,0);
dup2(1,1);
And it's not real clear what that would do. In a call like dup2(first, second), the man page says that since the second fd is open, it must be closed first. Smilie Or despite being all-caps, STDIN_FILENO and STDOUT_FILENO might actually be variables that get incremented somewhere. Also nowhere do I see anything about close-on-exec in the code... I don't understand why close-on-exec is even being mentioned here.
 

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Not Legal Characters

I have a file that I want to grep and identify all of the illegal characters. I have a list of legal ascii characters \11\12\40-\176,\0-\255 so i try a grep -v to exclude these but my syntax is not correct?? $ cat TRANS_20050613_00.DAT.ERROR | grep -v '\11\12\40-\176\0-\255' grep:... (2 Replies)
Discussion started by: lesstjm
2 Replies

2. Programming

legal code?

hi friends, the following code works fine,but the question is "is this a valid c". i really have no idea....... void func() { int x = 50; { int y; y = x + 400; printf("x = %d\n",x); printf("y = %d\n",y); } } (2 Replies)
Discussion started by: mxms755
2 Replies

3. AIX

Legal Disclaimer setup in CDE

Hi pals I manage nearly 200+ aix workstations. I need to setup a legal disclaimer in all the workstations. When the user do a interactive login in CDE the legal disclaimer should be displayed and once he accepts the same he should be able to login to system. Can anybody suggest me as to... (0 Replies)
Discussion started by: sriram.s
0 Replies

4. Programming

when parent process close, how to close the child?

can someone provide an example, where if the parent process quits for any reason, then the child process will also close? (3 Replies)
Discussion started by: omega666
3 Replies

5. Shell Programming and Scripting

Script Variables Inquiry, Values Okay in Standalone Exec, No-Show in Cron Exec

I have the following bash script lines in a file named test.sh. #!/bin/bash # # Write Date to cron.log # echo "Begin SSI Load $(date +%d%b%y_%T)" # # Get the latest rates file for processing. # d=$(ls -tr /rms/data/ssi | grep -v "processed" | tail -n 1) filename=$d export filename... (3 Replies)
Discussion started by: ginowms
3 Replies

6. Shell Programming and Scripting

Find and move command with exec

Hi all, I am trying to find files newer than a given file and them mv them to a new location. So I far I have: find . ! -newer <file_name> -exec ls -l {} \; and find . ! -newer <file_name> -exec mv /TEMP_LOCATION {} \; find is not liking this. Anyone know how to modify the last... (2 Replies)
Discussion started by: jonnyd
2 Replies

7. Programming

Array[count+1] legal?

I get weird decimal digits when I run the program below. int coe_amount; cout << "How many coefficients exist in your term? "; cin >> coe_amount; float coefficient; for (int count = 0; count < coe_amount; count ++) { ... (4 Replies)
Discussion started by: DyslexicChciken
4 Replies
DUP(2)							     Linux Programmer's Manual							    DUP(2)

NAME
dup, dup2 - duplicate a file descriptor SYNOPSIS
#include <unistd.h> int dup(int oldfd); int dup2(int oldfd, int newfd); DESCRIPTION
dup and dup2 create a copy of the file descriptor oldfd. After successful return of dup or dup2, the old and new descriptors may be used interchangeably. They share locks, file position pointers and flags; for example, if the file position is modified by using lseek on one of the descriptors, the position is also changed for the other. The two descriptors do not share the close-on-exec flag, however. dup uses the lowest-numbered unused descriptor for the new descriptor. dup2 makes newfd be the copy of oldfd, closing newfd first if necessary. RETURN VALUE
dup and dup2 return the new descriptor, or -1 if an error occurred (in which case, errno is set appropriately). ERRORS
EBADF oldfd isn't an open file descriptor, or newfd is out of the allowed range for file descriptors. EMFILE The process already has the maximum number of file descriptors open and tried to open a new one. WARNING
The error returned by dup2 is different to that returned by fcntl(..., F_DUPFD, ...) when newfd is out of range. On some systems dup2 also sometimes returns EINVAL like F_DUPFD. CONFORMING TO
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 documents additional EINTR and ENOLINK error conditions. POSIX.1 adds EINTR. SEE ALSO
fcntl(2), open(2), close(2) Linux 1.1.46 1994-08-21 DUP(2)
All times are GMT -4. The time now is 08:11 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy