Difference between revisions of "How to assign needed file descriptor to a file"

From CRIU
Jump to navigation Jump to search
m
Line 16: Line 16:
 
</pre>
 
</pre>
  
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.
+
what's next? In Linux there's a cool system call <code>dup2()</code> which assigns to a file, referenced by one file descriptor, some other one, given by the caller.
 
So the code would look like this:
 
So the code would look like this:
 
<pre>
 
<pre>

Revision as of 09:36, 5 August 2014

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);