Qual é a diferença do simples lançamento de **** > /dev/null &?
De nada. É apenas um conceito antigo e obsoleto, a continuidade por causa de compatibilidade. Single Unix Specification diz o seguinte:
There are two reasons why POSIX programmers call fork(). One reason is to create a new thread of control within the same program (which was originally only possible in POSIX by creating a new process); the other is to create a new process running a different program. In the latter case, the call to fork() is soon followed by a call to one of the exec functions.
The general problem with making fork() work in a multi-threaded world is what to do with all of the threads. There are two alternatives. One is to copy all of the threads into the new process. This causes the programmer or implementation to deal with threads that are suspenso on system calls or that might be about to execute system calls that should not be executed in the new process. The other alternative is to copy only the thread that calls fork(). This creates the difficulty that the state-of-process-local resources is usually held in process memory. Se um thread that is not calling fork() holds a resource resource that is never released in the child process because the thread, cujo job it is to release the resource does not exist in the child process.
When a programmer está escrevendo um multi-threaded program, the first described use of fork(), creating new threads in the same program is provided by the pthread_create() function. The fork() function is thus used only to run new programs, and the effects of the calling functions that require certain resources between the call to fork() and the call to an exec function está indefinido.
Posso estar errado, mas a minha opção "**** > /dev/null &" receberá um SIGHUP ao precipício de terminal
Transferência de estado, como espécie.
muito ideologicamente clara a idéia de bifurcação do processo de