I want to create a file descriptor in C whose value i will specify in code. I have a integer variable which specifies the value of file descriptor to be created. For example i may need a file descriptor whose value is 5 and later associate that with the file named "sample.dat" .
Asked
Active
Viewed 2.2k times
2 Answers
6
fd = open ("sample.dat", O_RDONLY);
open the file
dup2 (fd, 5);
and copy the file descriptor fd
into the descriptor number 5
now you can do read (5, buffer, BUFF_MAX);
or also use fd
to access the same file. You need to close the fd
explicitly if you do not need it.
As @Arkadiy told see man dup2
for details.

phoxis
- 60,131
- 14
- 81
- 117
-
1`dup` and `dup2` don't close the old file descriptor. – Chris Lutz May 09 '11 at 11:22
-
@Chris Lutz: Thanks for pointing it out. I have corrected the error. – phoxis May 09 '11 at 11:37
-
@ChrisLutz From [LDP] (https://www.tldp.org/LDP/lpg/node11.html): `NOTES: the old descriptor is closed with dup2()!`, please clarify. – fde-capu May 07 '20 at 10:40
4
You need dup2()
-
1You have to be careful. If `newfd` already belongs to a file it is closed! I think you would be better of using something like a map. – RedX May 09 '11 at 11:14