Re: different processes using same file object

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 29, 2009 at 04:45:28PM +0530, krushnaal pai wrote:
> each process has its own 'fd' array isnt it?

What fd array?...

> so a fd coming from another process doesnt make sense to the running process

Why not? The file descriptor is just an integer. What the kernel does
with it is its business.

Like this:

a = open("file", O_RDWR);
b = dup(a);
c = open("file", O_RDWR);

Let's assume the last open file descriptor before this was stderr, 2.
Then you get:
a = 3; b = 4; c = 5;

Now, there are two structures (simplified) in the kernel. A structure
for the file on disk, and a structure for the file descriptor (a pointer
to the file structure, flags, mode, offset).

So a and b point to the same file descriptor structure, while c points
to a new one, both pointing to the same file structure.

If you send file descriptor a to a second process, that one will get a
new file descriptor, like, say, 7.

It will point to the same file descriptor structure as file descriptor a
in the original process.

That's the only portable way to do this.

Remember that processes don't have direct access to any of those
structures, only to the integer values.

-- 
Luciano Rocha <luciano@xxxxxxxxxxx>
Eurotux Informática, S.A. <http://www.eurotux.com/>

Attachment: pgpnjfBWp8EMz.pgp
Description: PGP signature


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux