07-10-2005, 01:26 PM
07-11-2005, 07:08 AM
Hola, si lo que quieres es ejecutar comandos del shell, sólo tienes que usar la sentencia system()...
ejemplo, para ejecutar top:
ejemplo, para ejecutar top:
Código:
#include <stdlib.h>
int main()
{
system(\"top\");
return 0;
}
aca te dejo la referencia:
Código:
int system ( const char * command );
Execute command.
Invokes command interpreter to execute a command. Once terminated, the interpreter gives back control to the program returning an int value.
Parameters.
command
Null-terminated string containing the system command to be executed.
Return Value.
If a command was successfully executed the command interpreter returns an adequate value; generally 0 indicates that the action performed by the command interpreter terminated with no errors.
A return value of -1 indicates an error, and global variable errno is set to one of the following errors:
value description
ENOENT Command interpreter not found
ENOEXEC Command interpreter is not executable
ENOMEM Error allocating memory for the process
E2BIG Argument list too big
Portability.
Defined in ANSI-C.
Return value and possible errno values are system dependent.
Example.
/* system example : DIR */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
puts (\"Trying to execute command DIR\");
i = system (\"dir\");
if (i==-1) puts (\"Error executing DIR\");
else puts (\"Command successfully executed\");
return 0;
}
saludos...
07-14-2005, 06:20 PM
hola ! voy a tratar de explicarme mejor
lo que me interesa es poder usar en mis programas una interfas mas amena para el usuario y no solo limitarme al printf() /scanf().... es por eso que queria uncorporar por ejemplo las posibilidades del programa dialog... que hacen una intertfas bien bonita...
entonces reformulo la pregunta...
como uso dialog por ejemplo en mi porgrama...
esa forma que me decis es muy interesante... pero si yo llamo a dialog y hago un inputbox el dato capturado como lo vuelca al programa que estoy haciendo...
bueno experimento y te escribo gracias....
pd: todo esto venia a ver si era posible evitar usar ncurses o pearl \"puesto que no lo manejo ni de cerca....!!\"
lo que me interesa es poder usar en mis programas una interfas mas amena para el usuario y no solo limitarme al printf() /scanf().... es por eso que queria uncorporar por ejemplo las posibilidades del programa dialog... que hacen una intertfas bien bonita...
entonces reformulo la pregunta...
como uso dialog por ejemplo en mi porgrama...
esa forma que me decis es muy interesante... pero si yo llamo a dialog y hago un inputbox el dato capturado como lo vuelca al programa que estoy haciendo...
bueno experimento y te escribo gracias....
pd: todo esto venia a ver si era posible evitar usar ncurses o pearl \"puesto que no lo manejo ni de cerca....!!\"
07-14-2005, 07:17 PM
que programa es dialog???, si necesitas guardar un parámetro dado por ese programa, sólo tenes que poner i = system (\"dialog [algo]\"); y ya esta en la variable i...
saludos...
saludos...
07-15-2005, 10:33 AM
Como dijo Warp, tendrias que usar la funcion system de C...
aca te dejo una pagina que tiene todas las opciones de dialog
http://nixdoc.net/man-pages/Linux/man1/dialog.1.html
Espero que te sirva...
Saludos!!!...
aca te dejo una pagina que tiene todas las opciones de dialog
http://nixdoc.net/man-pages/Linux/man1/dialog.1.html
Espero que te sirva...
Saludos!!!...

07-15-2005, 05:44 PM
gracias...
no se si esta sea la mejor forma de hacer una interface
pero hasta que aprenda ncurses....
no se si esta sea la mejor forma de hacer una interface
pero hasta que aprenda ncurses....
07-25-2005, 12:13 PM
bueno hola otra vez!!
estuve probando el tema de utilizar system()....
pero hay un problema .. sole devuelve valores enteros(1,0 o -1)creo..
de acuerdo al resultado de la funcion..
por esto no sirve para capturar una cadena de caracteres.....
entonces fui a buscar el codigo de dialog(programa de salvio lam) y estoy ahora trabajando con eso...\" Warp....dialog es el programa con el que esta hecha el scrip de iunstalkacion de slackware por ejemplo\"
tengo una pregunta...??
etoy haciendo un programa para diseño de circuitos electronicos (algo simple pero que no puede encontrar por ahi...) y como dije antes estoy modificando algunos fuentes.....
no hay problema con esto verdad? osea con modificar y utilizar las fuentes de otro...
tambien quisiera saber un poco mas sobre el tema de la publicacion del software.....(licencias, etc... ) y bueno creo que por el momentop es todo......
gracias atodos ustedes que estan ahi y hacen posible la existencia de gnu/linux!!!!!!!!!!!!!1
gracias!!!!!!!!
saludos.!!
estuve probando el tema de utilizar system()....
pero hay un problema .. sole devuelve valores enteros(1,0 o -1)creo..
de acuerdo al resultado de la funcion..
por esto no sirve para capturar una cadena de caracteres.....
entonces fui a buscar el codigo de dialog(programa de salvio lam) y estoy ahora trabajando con eso...\" Warp....dialog es el programa con el que esta hecha el scrip de iunstalkacion de slackware por ejemplo\"
tengo una pregunta...??
etoy haciendo un programa para diseño de circuitos electronicos (algo simple pero que no puede encontrar por ahi...) y como dije antes estoy modificando algunos fuentes.....
no hay problema con esto verdad? osea con modificar y utilizar las fuentes de otro...
tambien quisiera saber un poco mas sobre el tema de la publicacion del software.....(licencias, etc... ) y bueno creo que por el momentop es todo......
gracias atodos ustedes que estan ahi y hacen posible la existencia de gnu/linux!!!!!!!!!!!!!1
gracias!!!!!!!!
saludos.!!
07-25-2005, 08:00 PM
bueno si quieres mmodificar los codigos de otros progs. te tenes que fijar que licencia tienen, si son gpl no hay drama...
aca tenes más sobre la licencia gpl: http://www.preguntaslinux.org/showthread.php?tid=510
después esta la licencia open source...
y la que es pago....
saludos...
aca tenes más sobre la licencia gpl: http://www.preguntaslinux.org/showthread.php?tid=510
después esta la licencia open source...
y la que es pago....
saludos...
12-21-2006, 12:48 AM
Hola 
Lo que queres hacer se llama en relidad tuberias osea pipe.
C/C++ interactua con shell a traves de una funcion que lee o escirbe.
Para leer mas visita http://blog.txipinet.com/index.php/2006/...-linux-vii
Si no entiendes algo avisa.
exitos

Lo que queres hacer se llama en relidad tuberias osea pipe.
C/C++ interactua con shell a traves de una funcion que lee o escirbe.
Para leer mas visita http://blog.txipinet.com/index.php/2006/...-linux-vii
Si no entiendes algo avisa.
exitos

12-21-2006, 01:03 AM
El siguiente código es una muestra clara de cómo se puede hacer una llamada utilizando tuberías y procesos hijo, de forma sencillísima:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <limits.h>
#define SIZE PIPE_BUF
int main(int argc, char *argv[])
{
FILE *file;
char *command= "ls .";
char buffer[SIZE];
file=popen( command, "r" );
while( !feof( file ) )
{
fscanf( file, "%s", &buffer );
printf( "%s\n", buffer );
}
pclose( file );
return 0;
}
Nuestro programa simplemente crea un proceso hijo que será reemplazado por una llamada al comando “ls .”, y se nos devolverá un puntero a un fichero que será el resultado de ese comando. Leemos ese fichero y lo escribimos por pantalla. Al finalizar, cerramos la tubería con pclose().
Lee tambien el post anterior y especifico web.
exitos
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <limits.h>
#define SIZE PIPE_BUF
int main(int argc, char *argv[])
{
FILE *file;
char *command= "ls .";
char buffer[SIZE];
file=popen( command, "r" );
while( !feof( file ) )
{
fscanf( file, "%s", &buffer );
printf( "%s\n", buffer );
}
pclose( file );
return 0;
}
Nuestro programa simplemente crea un proceso hijo que será reemplazado por una llamada al comando “ls .”, y se nos devolverá un puntero a un fichero que será el resultado de ese comando. Leemos ese fichero y lo escribimos por pantalla. Al finalizar, cerramos la tubería con pclose().
Lee tambien el post anterior y especifico web.
exitos

10-04-2007, 12:44 PM
Hola
bueno aki kon un aporte, gastonseche si necesitas usar el system y cadenas es necesario utilizar el sprintf, el cual te concatenaria una cadena a una variable y solo es necesario mandarlo en la funcion system, en el siguiente ejemplo te muestro como mandar parametros cadenas a un shell:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c[50]= “hola”;
char script[100];
sprintf(script,"/home/script.sh %s", c);
system(script);
return 0;
}
Tomando en kuenta ke en el shell script.sh cacha un valor, por ejemplo "a=$1"
Espero sirva de ayuda, saludos
bueno aki kon un aporte, gastonseche si necesitas usar el system y cadenas es necesario utilizar el sprintf, el cual te concatenaria una cadena a una variable y solo es necesario mandarlo en la funcion system, en el siguiente ejemplo te muestro como mandar parametros cadenas a un shell:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c[50]= “hola”;
char script[100];
sprintf(script,"/home/script.sh %s", c);
system(script);
return 0;
}
Tomando en kuenta ke en el shell script.sh cacha un valor, por ejemplo "a=$1"
Espero sirva de ayuda, saludos
