Ejecutar comando de shell desde C

30 01 2008

Hay ocaciones en que ejecutar un comando nativo del sistema, o mejor dicho un comando reconocido por nuestra shell, nos facilita mucho la vida….

Bueno, no para todos es tan obvio como hacer esto, asi que aca voy a dejar registrado como realizar esta sencilla operacion😉

El formato es simple😀
system("comando que quieras");

Aqui dejo un sencillisimo ejemplo, primero creamos un archivo llamado myls.c y dentro de él ponemos el siguiente codigo:

#include<stdio.h>
int main(){
system("ls -l");
return 0;
}

Al copiar y pegar el codigo va a tener un problemas con las comillas, asi que las tienen que poner denuevo😀

Para compilar hacemos lo siguiente:
gcc myls.c -o myls

y finalmente para ejecutarlo, hacemos lo siguiente :

./myls

Al ejecutar este programa , será lo mismo que ejecutar en la consola el comando “ls -l” ( sin comillas).

Saludos


Acciones

Information

16 responses

11 09 2008
Juan Roberto Gonzalez

Se puede ejecutar un comamdno shell desde C y esperar por una respuesta antes de seguir procesando???
Gracias!

2 03 2009
danito

sencillo y util saber como van las llamadas al systema

16 03 2009
joel-jonas

bueno gracias por tu post es muy bueno pero tengo una duda si quisiera abrir un carpeta como le hago..?

16 03 2009
jgutierrez

Hola Joel-jonas!
Bueno en el caso que quieras abrir una carpeta para navegarla puedes poner la instruccion “nautilus ~”, por ejemplo, esto abriria tu home en una ventana de nautilus.
No se si esa era tu pregunta.
Saludos

15 06 2009
Mario

Si quiero capturar los resultados?
Gracias.

3 12 2009
luis

men demasiadas gracias, usted no sabe la salvada que me acaba de pegar

12 12 2010
ivan

Como hago para capturar la salida del system(“ls -l”) por ejemplo, y mostrarlo en un textEdit???

23 04 2011
Maipu

system(“ls -l > Archivo”)

si el archivo no existe lo crea y si existe lo sobreescribe.

si en vez de poner “>” pones “>>” agrega el contenido al final del archivo.

Tambien seria sano agregar la librería stdlib.h al principio del codigo para que al compilar con la opcion “-Wall” no arroje warning.

#include

Saludoss

11 11 2011
bars

hola amig me podrias ayudar, lo que necesito hacer es abrir un directorio pero desde el mismo programa (sin abrir el directorio) mas bien es acceder al directorio, por eso nautilus no me sirve xq eso abre el directorio pero yo ocupo algo para acceder una ilustracion seria algo asi
system(“cd directorio”); algo asi me entiendes??

4 03 2012
Julio

muchas gracias funciono perfecto

13 11 2012
Alfredo

Como consigo pasar el resultado de la orden a una variable.
Ejemplo:
Pasar a la variable x el resultado de hacer un ls

12 06 2013
ramiro giandinoto

Quisiera saber cómo puedo abrir la terminal y dentro de ella ejecutar el comando ls todo desde C. Muchas gracias y geniales tus explcaciones.

24 03 2014
Ricardo

Para ejecutar un comando en shell desde un programa en C y recuperar su salida pueden utilizar la función popen(): http://www.lix.polytechnique.fr/~liberti/public/computing/prog/c/C/FUNCTIONS/popen.html

31 03 2014
dalmemail

Una pregunta ese system esta incluido en stdio.h la cosa es que tengo una version de stdio.h que no lo detecta como lo programo (la funcion system) GRACIAS

13 05 2014
Anónimo

Muy claro y directo.

27 06 2016
salo

a mi em sale este mensaje amigo “Permission denied”, alguna idea de como solventarlo?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: