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
Se puede ejecutar un comamdno shell desde C y esperar por una respuesta antes de seguir procesando???
Gracias!
sencillo y util saber como van las llamadas al systema
bueno gracias por tu post es muy bueno pero tengo una duda si quisiera abrir un carpeta como le hago..?
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
Si quiero capturar los resultados?
Gracias.
Usa esto:
#include
int main(){
system(«echo $(ls) > archivo-para-registrar-datos.txt»)
system(«nautilus /root»); // Pon la carpeta que quieras
return 0;
}
Lo compilas (gcc programa.c -o programa)
Le das permisos (chmod 777 programa)
Lo ejecutas (./programa)
men demasiadas gracias, usted no sabe la salvada que me acaba de pegar
Como hago para capturar la salida del system(«ls -l») por ejemplo, y mostrarlo en un textEdit???
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
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??
muchas gracias funciono perfecto
Como consigo pasar el resultado de la orden a una variable.
Ejemplo:
Pasar a la variable x el resultado de hacer un ls
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.
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
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
Muy claro y directo.
a mi em sale este mensaje amigo «Permission denied», alguna idea de como solventarlo?
Porque debes ejecutar como administrador, seguro invocas un comando que requiere permisos administrativos
Dale permisos asi:
chmod 777 programa
y luego lo ejecutas
./programa
hola
como le hago para poner una imagen de icono a mi programa en c
hola, hay alguna otra manera de ejecutar un comando shell sin system o exec?
Buen post!!!