Using RTC DS1307 in multiple programs
The problem you are having is one of concurrent access. Both processes are reading from the same file and so depending on the OS, one process gets a few bytes, then the other one, then the other one, etc. The mistakes will be seemingly random and based off how the OS schedules tasks to run. So the nice tidy sequences of date-time information from the DS1307 is getting chopped up and divided between the two processes, resulting in nonsense for both.

I would recommend looking into a shared memory solution. You would have a single process that is allowed to call rtc_read_date that places "messages" in a FIFO structure in shared memory. Then all the other processes that need date-time information could take the "messages" from the FIFO structure. This is not exactly trivial for a beginner but would be great to learn. Looking through this repository would be a good start.