dup(2) System Calls Manual dup(2)Name
dup, dup2 - duplicate an open file descriptor
Syntax
newd = dup(oldd)
int newd, oldd;
dup2(oldd, newd)
int oldd, newd;
Description
The system call duplicates an existing object descriptor. The argument oldd is a small non-negative integer index in the per-process
descriptor table. The value must be less than the size of the table, which is returned by The new descriptor, newd, returned by the call
is the lowest numbered descriptor that is not currently in use by the process.
The object referenced by the descriptor does not distinguish between references using oldd and newd in any way. Thus, if newd and oldd are
duplicate references to an open file, and calls all move a single pointer into the file. If a separate pointer into the file is desired, a
different object reference to the file must be obtained by issuing an additional call.
In the second form of the call, specify the value of newd needed. If this descriptor is already in use, the descriptor is first deallocated
as if a call had been done.
Return Values
The value -1 is returned if an error occurs in either call. The external variable errno indicates the cause of the error.
Diagnostics
The and system calls fail under the following conditions:
[EBADF] The oldd or newd is not a valid active descriptor.
[EMFILE] Too many descriptors are active.
[EINTR] The or function was terminated prematurely by a signal.
See Alsoaccept(2), close(2), getdtablesize(2), lseek(2), open(2), pipe(2), read(2), socket(2), socketpair(2), write(2)dup(2)
Check Out this Related Man Page
dup(2) System Calls Manual dup(2)Name
dup, dup2 - duplicate an open file descriptor
Syntax
newd = dup(oldd)
int newd, oldd;
dup2(oldd, newd)
int oldd, newd;
Description
The system call duplicates an existing object descriptor. The argument oldd is a small non-negative integer index in the per-process
descriptor table. The value must be less than the size of the table, which is returned by The new descriptor, newd, returned by the call
is the lowest numbered descriptor that is not currently in use by the process.
The object referenced by the descriptor does not distinguish between references using oldd and newd in any way. Thus, if newd and oldd are
duplicate references to an open file, and calls all move a single pointer into the file. If a separate pointer into the file is desired, a
different object reference to the file must be obtained by issuing an additional call.
In the second form of the call, specify the value of newd needed. If this descriptor is already in use, the descriptor is first deallocated
as if a call had been done.
Return Values
The value -1 is returned if an error occurs in either call. The external variable errno indicates the cause of the error.
Diagnostics
The and system calls fail under the following conditions:
[EBADF] The oldd or newd is not a valid active descriptor.
[EMFILE] Too many descriptors are active.
[EINTR] The or function was terminated prematurely by a signal.
See Alsoaccept(2), close(2), getdtablesize(2), lseek(2), open(2), pipe(2), read(2), socket(2), socketpair(2), write(2)dup(2)
What does the system call "dup" do?
What is the difference between dup and dup2
I have a fair idea of what it does but I am confused when its coming down to the exact details...
Please help me!:confused: (2 Replies)
Would anyone be so kind to explain to me the function of dup() in UNIX? As far as I am concerned, it duplicates a file descriptor. Under what circumstances would we need to duplicate a file descriptor in a UNIX environment?
Thank you.
vinchen (3 Replies)
I have met this code:
switch(fork()) {
case 0:
close(1);
dup(p);
close(p);
close(p);
execvp(<whatever>);
perror("Exec failed");
}
Can anyone tell me what this piece of code does?
Thx alot.. (1 Reply)
I'm having difficulty understanding the purposes of using dup/dup2 when involving forks.
for example, if we call fork() once, that is, we are creating a child process. In what cases would we need to use dup or dup2 to duplicate the file descriptors for standard output and standard error? What... (1 Reply)
open, creat, read, write, lseek and close
Are they all primitive?
:confused:
*Another Question: is there a different between a system call, and an i/o system call? (2 Replies)
Im working on writing a small operating system. I am currently working on implementing dup, dup2, pipe, and close and I need to implement some type of file descriptor table in my PCB.
I was wondering if there is anyone who is familiar with linux/unix implementation of these tables who could... (6 Replies)
Hi Friends,
I have written a program which will listener for more than 1000 requests per second from a single socket descriptor and then it will process those requestes. Its taking X amount of time. Now i want to reduce that time. Will I can write multiple threads to receive the... (2 Replies)
I am trying to right a function which uses a file descriptor to write to a log file. The problem is that the on the print statement the file descriptor is called bad. Now when I first open the file and print to it in the f_open function by passing the descriptor to f_print_log all works well,... (6 Replies)
when i want to replace standard output with output file
int out;
out = open("out", O_WRONLY)p;
dup2(out,1);
What Shall I do in case of appending??? I am using here O_WRONLY TO WRITE.BUT IF i wanna append, whats the word? (5 Replies)
hi....,
can anyone tell me what is the exact difference between file descriptor and file pointer...... and why file descriptor takes integer value???:confused: (10 Replies)
is it possible to duplicate file descriptors(opened by a different process) with the help of dup or dup2. the two process do not share parent child relationship as well. (2 Replies)
The problematic directory is the following:
/root/.cache/deja-dup
This directory grows until my "/" is full and then the restoring activity fails.
I already tried to create a symbolic link with origin another partition where I have more space. However during the restoring activity ... (4 Replies)