pthread
а я правильно понимаю, что если нам надо сделать поток, выполняющий некое "одноразовое" задание параллельно с вызвавшим его процессом (скажем, "записать файл", но основная программа не должна в это время ждать), то поток надо создать, потом сделать внутри него pthread_detach, потом (после завершения операции) pthread_exit ? причём параметром _exit будет, если основной программе пофиг на результат операции, NULL?