В принципе, Linux clone () может реализовывать не только новый процесс (например, fork ()) или новый поток (например, pthread_create), но и все, что между ними.
На практике он используется только для одного или другого. Потоки, созданные с помощью pthread_create, совместно используют файловые дескрипторы со всеми другими потоками в процессе (не только с родительским). Это не подлежит обсуждению.
Совместное использование файлового дескриптора и наличие копии отличается. Если у вас есть копия (например, fork ()), все копии должны быть закрыты до того, как дескриптор файла исчезнет. Если вы разделяете FD в потоке, как только вы его закроете, он исчезнет.