It means that in order to read from a file or write to it, you need to perform a system call, and your file descriptor (the integer) is a parameter you use to tell the kernel which file you are talking about. The fact that they are integers is relatively uninteresting, they could be anything; you only ever use them transparently, that is, you open a file, store the descriptor, then you pass the descriptor back to the kernel for any operations on that file. Its value is only interesting to the kernel. One notable exception are the special file descriptors 0, 1, and 2 (stdin, stdout, and stderr), but even for those, you usually use the predefined constants rather than literal integer values.