[Частичный ответ: я отвечаю на ваши вопросы 1 и 2, но не 3.]
fork
можно рассматривать как создание процесса, который начинается с копии памяти родительского процесса, но затем эти два могут быть изменены по отдельности, так что содержимое может расходиться после первоначальной копии. Фактически для эффективности он реализован как копирование при записи, так что любое копирование происходит только в том случае, если и когда страницы памяти действительно изменены, но этот факт не должен влиять на концепцию того, что это копия.
Это означает, что для ответа на ваши вопросы 1 и 2 идентификатор объекта тот же, потому что он был создан до вилки, но назначения, выполненные после вилки, не будут видны в другом процессе. В любом случае у вас нет контроля над временем выполнения в родительском и дочернем процессах (но даже если время менялось, результаты каждого из них не пострадали бы, только, возможно, порядок, в котором они были сопоставлены).