10-30-2001
dup in unix
hi ..,
You are right, its used to duplicate the file discriptor.
the application demands the situation for example,
you have a client to pull data from a server on a different m/c and
you want your clients to run as daemon processes,
you can not associate any terminal device associated for daemon processes.
In this case, you open a null file discriptor with
open("/dev/null",O_RDONLY)
and dup this discriptor for stdin , stdout and stderr.
this prevents your processes from directly writing or reading from stdio.
I hope this might help you a bit in understanding.
thanks
reddyb
7 More Discussions You Might Find Interesting
1. Programming
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)
Discussion started by: AkumaTay
1 Replies
2. Programming
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)
Discussion started by: Yifan_Guo
1 Replies
3. Programming
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)
Discussion started by: joey
5 Replies
4. Red Hat
Ntop is running on redhat. But It gives DUP! error while pinging to any places
I dont know why DUP! error is occured.
# ping google.com
PING google.com (74.125.39.147) 56(84) bytes of data.
64 bytes from fx-in-f147.1e100.net (74.125.39.147): icmp_seq=1 ttl=44 time=54.1 ms
64 bytes from... (6 Replies)
Discussion started by: getrue
6 Replies
5. Shell Programming and Scripting
Hi,
I have a requirement where I have to identify duplicates from a file based on the first 6 chars (It is fixed width file of 12 chars length) and whenever a duplicate row is found, its original and duplicate row's last 2 chars should be updated to all 0's if they are not same. (I mean last 2... (3 Replies)
Discussion started by: farawaydsky
3 Replies
6. Shell Programming and Scripting
Hi Gurus,
I need to count the duplicate records in file
file
abc
abc
def
ghi
ghi
jkl
I want to get below result:
abc ,2
abc, 2
def ,1
ghi ,2
ghi, 2
jkl ,1
or
abc ,2
def ,1 (3 Replies)
Discussion started by: ken6503
3 Replies
7. UNIX and Linux Applications
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)
Discussion started by: puertas12
4 Replies
LEARN ABOUT MOJAVE
mount_fdesc
MOUNT_FDESC(8) BSD System Manager's Manual MOUNT_FDESC(8)
NAME
mount_fdesc -- mount the file-descriptor file system
SYNOPSIS
mount_fdesc [-o options] fdesc mount_point
DESCRIPTION
The mount_fdesc command attaches an instance of the per-process file descriptor namespace to the global filesystem namespace. The conven-
tional mount point is /dev and the filesystem should be union mounted in order to augment, rather than replace, the existing entries in /dev.
This command is normally executed by mount(8) at boot time.
The options are as follows:
-o Options are specified with a -o flag followed by a comma separated string of options. See the mount(8) man page for possible options
and their meanings.
The contents of the mount point are fd, stderr, stdin, stdout and tty.
fd is a directory whose contents appear as a list of numbered files which correspond to the open files of the process reading the directory.
The files /dev/fd/0 through /dev/fd/# refer to file descriptors which can be accessed through the file system. If the file descriptor is
open and the mode the file is being opened with is a subset of the mode of the existing descriptor, the call:
fd = open("/dev/fd/0", mode);
and the call:
fd = fcntl(0, F_DUPFD, 0);
are equivalent.
The files /dev/stdin, /dev/stdout and /dev/stderr appear as symlinks to the relevant entry in the /dev/fd sub-directory. Opening them is
equivalent to the following calls:
fd = fcntl(STDIN_FILENO, F_DUPFD, 0);
fd = fcntl(STDOUT_FILENO, F_DUPFD, 0);
fd = fcntl(STDERR_FILENO, F_DUPFD, 0);
Flags to the open(2) call other than O_RDONLY, O_WRONLY and O_RDWR are ignored.
The /dev/tty entry is an indirect reference to the current process's controlling terminal. It appears as a named pipe (FIFO) but behaves in
exactly the same way as the real controlling terminal device.
FILES
/dev/fd/#
/dev/stdin
/dev/stdout
/dev/stderr
/dev/tty
SEE ALSO
mount(2), unmount(2), tty(4), fstab(5), mount(8)
CAVEATS
No ~. and .. entries appear when listing the contents of the /dev/fd directory. This makes sense in the context of this filesystem, but is
inconsistent with usual filesystem conventions. However, it is still possible to refer to both ~. and .. in a pathname.
This filesystem may not be NFS-exported.
HISTORY
The mount_fdesc utility first appeared in 4.4BSD.
4.4BSD March 27, 1994 4.4BSD