Sembra che ci siano due modi comuni di esecuzione di un eseguibile esterno da C in UNIX, chiamataa system() o fork()/exec()?
system()
e
pid = fork()
switch(pid)
//switch statement based on return value of pid,
//one branch of which will include and exec() command
C'è qualche motivo per preferire un fork/exec sopra il sistema nel caso in cui sono funzionalmente equivalenti (il processo genitore attende che il bambino finisca, nessuna informazione complessa viene restituita dal bambino) ?.
Ho chiesto al mio prof quale sia la differenza e ha detto 'system()' è un'API per il sistema operativo e 'fork/exec' sono chiamate a livello di sistema. È vero? La mia comprensione è che le API per il sistema operativo sono più sicure, nel senso che possono contenere controlli aggiuntivi, al contrario delle chiamate di sistema. – Celeritas
@Celeritas In un certo senso (le chiamate di sistema sono anche API del sistema operativo), ma la tua conclusione è falsa, come ho sostenuto nella risposta. 'system' non aggiunge controlli; aggiunge funzionalità non controllata. –