Do different threads within a single process have distinct independent file descriptor tables? If multiple threads within the same process concurrently access a single file,
No, there is only one file descriptor table per process, and it's shared among all the threads.
From your problem description, you might want to look into the pread() and pwrite() functions.