title: File descriptors table and system calls
body: <p>I have been reading about file descriptors and how the operating system manages files and provide access to them for processes using the C system call "open()", and I have couple of questions:  </p>
  
  <ul>
  <li>The file descriptors table: is it just one big data structure that all processes share (like, say there are two processes: process A and process B, do they have pointers to the OS's file descriptors table), or does the operating system create a whole new array of file descriptors for each process?   </li>
  <li>What other programming languages can invoke system calls? for example, I know that with C/C++ you can easily invoke system calls using the OS interface (fork(),close(),open(),execl()... and so on), but what about Java? I don't recall that there's a way of invoking these functions. how exactly does it work there? does the JVM just translate (what need to be translated) my code to the above system calls? so then what about other high-level programming languages like Python? </li>
  <li>What harm can be done if I will not close a file after opening it with the system call close()?</li>
  </ul>
  
  <p>Thanks.</p>