Razin Razin - 9 days ago 8
C Question

What is file-descriptor?

While trying to learn socket programming, I saw the following code:

int sock;
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);


I browsed through the man page and found that socket returns a file descriptor. I have tried searching the internet and other similar questions here but I couldn't understand what file descriptor really is. I have to complete my socket programming coursework in two days. So if someone could explain file descriptor in easy language, that would be great.

Answer

In simple words, when you open a file, the operating system creates an entry to represent that file and store the information about that opened file. So if there are 100 files opened in your OS then there will be 100 entries in OS (somewhere in kernel). These entries are represented by integers like (...100, 101, 102....). This entry number is the file descriptor. So it is just an integer number that uniquely represents an opened file in operating system. If your process opens 10 files then your Process table will have 10 entries for file descriptors.

Similarly when you open a network socket, it is also represented by an integer and it is called Socket Descriptor. I hope you understand.