How to assign needed file descriptor to a file
Jump to navigation
Jump to search
Let's imagine we have opened a file and want it to have some exact descriptor number, not the one kernel gave to us.
The information we have is
struct fd { struct file *file; int tgt_fd; } *fd;
and we've just done the
int fd; fd = open_a_file(fd->file);
what's next? In Linux there's a cool system call dup2()
which assigns to a file, referenced by one file descriptor, some other one, given by the caller.
So the code would look like this:
int fd; fd = open_a_file(fd->file); dup2(fd, fd->tgt_fd); close(fd);