Maybe I’m misunderstanding, but I don’t see why you need to share the filehandle among any of the child processes. Have the parent thread read in the file, split the data into appropriate-sized chunks (or lines, as you say), and feed each chunk to a different child process. This will avoid all the problems arising from shared filehandles, including those detailed by wrog, above, and without losing any of the potential benefits of utilising multiple cores. (Whether those benefits outweigh the additional overhead of creating and managing the child processes is another question, one which you will need to answer by profiling.)
Hope that helps,