2008-11-20 8 views

Respuesta

12

El sistema también utiliza una combinación fork/exec .... Si lo hace fork/exec usted mismo puede ejecutar en paralelo a su proceso en ejecución, mientras que system está bloqueando (incluye el wait). También system ejecuta el comando no directo, pero a través de un shell (que causa problemas con el bit setuid) y system bloquea/ignora ciertas señales (SIGINT, SIGCHILD, SIGQUIT).

6

Sí, system() ejecuta el comando a través de un shell, mientras que exec() ejecuta el comando directamente. Por supuesto, la introducción de un shell se abre para los errores y exploits.

Editar: por supuesto, the man page proporciona más detalles.

+0

"la introducción de una concha se abre para bugs y exploits" - Sólo si se permite que una persona escriba los comandos. Si su aplicación genera el texto del comando de shell, no hay posibilidad de un exploit. –

+0

Una posibilidad es si el usuario cambia algunas variables de shell antes de que se ejecute su código. Existe la posibilidad de explotar, pero no estoy seguro de qué tan genérico es. – foo

+0

También tiene trucos path/linker. [Rompiendo los enlaces: Explotando el enlazador] (http://www.nth-dimension.org.uk/pub/BTL.pdf). – jww

3

sistema() funciona en Windows pero fork() no.

A menos que utilice una capa de compatibilidad como Cygwin, pero incluso entonces una horquilla puede ser muy costosa.

+0

la pregunta está etiquetada como linux/unix, por lo que una respuesta de Windows no es tan útil ... –

+1

@Nathan, La pregunta menciona las diferencias de portabilidad, que es esta. – finnw

+0

Tengo una pregunta sobre la cuestión de los gastos, ¿Cómo es el tenedor más caro que el sistema. El sistema también bifurca un proceso, sino que bifurca dos procesos. – foo

2

También ha Popen(), que es como el sistema(), pero permite leer la salida del niño y proporcionar información

5

system() se fork()/exec() la cáscara, y luego Shell fork()/exec() el programa que desee lanzamiento.

Así system() es dos veces tan pesado como fork()/exec()

Cuestiones relacionadas