Claro! Um padrão comum em programas "wrapper" é fazer várias coisas e depois substituir-se por algum outro programa com apenas uma chamada exec
(sem fork)
#!/bin/sh
export BLAH_API_KEY=blub
...
exec /the/thus/wrapped/program "$@"
Um exemplo real disso é GIT_SSH
(embora git(1)
também ofereça GIT_SSH_COMMAND
se você não quiser fazer o método do programa wrapper acima).
O Fork-only é usado ao gerar vários processos tipicamente de trabalho (por exemplo, Apache httpd
no modo fork (embora o fork seja mais adequado para os processos que precisam queimar a CPU e não para os que estão esperando pela rede) E / S para acontecer)) ou para separação de privilégios usada por sshd
e outros programas no OpenBSD (sem exec)
$ doas pkg_add pstree
...
$ pstree | grep sshd
|-+= 70995 root /usr/sbin/sshd
| \-+= 28571 root sshd: jhqdoe [priv] (sshd)
| \-+- 14625 jhqdoe sshd: jhqdoe@ttyp6 (sshd)
O root
sshd tem na conexão do cliente bifurcado uma cópia de si mesmo (28571) e, em seguida, outra cópia (14625) para a separação de privilégio.