Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Llevar a cabo acciones del sistema en c++

Estas en el tema de Llevar a cabo acciones del sistema en c++ en el foro de C/C++ en Foros del Web. Buenas, quería consultar como por ejemplo tanto en windows como en linux podria llevar a cabo acciones del estilo "delete archivo", o "mv /d1/archivo1 archivo2" ...
  #1 (permalink)  
Antiguo 15/07/2008, 13:28
 
Fecha de Ingreso: julio-2008
Mensajes: 21
Antigüedad: 15 años, 9 meses
Puntos: 0
Llevar a cabo acciones del sistema en c++

Buenas, quería consultar como por ejemplo tanto en windows como en linux podria llevar a cabo acciones del estilo "delete archivo", o "mv /d1/archivo1 archivo2"

Es decir cual sería la sintaxis del lenguaje para llevar a cabo acciones de este tipo?

También quería que me guiarais en una cosilla, por ejemplo si yo quiero pedir una variable en consola pues la coge con el flujo de entrada y tal, pero si quiero que aparezca una ventana gráfica en la que escribir el texto que quiera? he usado la SDL la verdad que un poco por encima así que no sé si con esta biblioteca será posible, lo que querria es que me dierais una pista por dónde empezar a buscar/leer.
  #2 (permalink)  
Antiguo 15/07/2008, 13:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Llevar a cabo acciones del sistema en c++

Para llevar a cabo esas acciones solo debes usar:
Código:
system("acción");
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 15/07/2008, 13:42
 
Fecha de Ingreso: julio-2008
Mensajes: 21
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Llevar a cabo acciones del sistema en c++

Muchas gracias, pero en linux que deberíamos usar? ya que system("accion") es exclusivo de windows (bueno en el compilador c-free ni siquiera te deja compilar el código con system...)
  #4 (permalink)  
Antiguo 15/07/2008, 18:39
 
Fecha de Ingreso: julio-2008
Mensajes: 38
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Llevar a cabo acciones del sistema en c++

Para windows, tienes

#include <windows.h>

Para linux (bsd, unix también), para empezar (por ejemplo):

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

Y muchos más. Usa man.

No uses system().
  #5 (permalink)  
Antiguo 17/07/2008, 16:04
 
Fecha de Ingreso: julio-2008
Mensajes: 21
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Llevar a cabo acciones del sistema en c++

Conoces algún link con ejemplos de uso o alguna breve explicación? Gracias
  #6 (permalink)  
Antiguo 18/07/2008, 02:03
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Mensaje Respuesta: Llevar a cabo acciones del sistema en c++

Cita:
Iniciado por Alvarodt Ver Mensaje
Buenas, quería consultar como por ejemplo tanto en windows como en linux podria llevar a cabo acciones del estilo "delete archivo", o "mv /d1/archivo1 archivo2"

Es decir cual sería la sintaxis del lenguaje para llevar a cabo acciones de este tipo?
En el caso de Linux no es tan sencillo como la función system().
Usas un fork() para crear un nuevo proceso, un execXX() para reemplazar la imágen en memoria del proceso hijo, y wait().

Un ejemplo sencillo:
http://www.forosdelweb.com/f96/crean...c-wait-483910/

Google:
http://www.google.com.gt/search?q=fo...ux+c%2B%2B

Cita:
Iniciado por Alvarodt Ver Mensaje
También quería que me guiarais en una cosilla, por ejemplo si yo quiero pedir una variable en consola pues la coge con el flujo de entrada y tal, pero si quiero que aparezca una ventana gráfica en la que escribir el texto que quiera? he usado la SDL la verdad que un poco por encima así que no sé si con esta biblioteca será posible, lo que querria es que me dierais una pista por dónde empezar a buscar/leer.
Hay varias librerias gráficas en Linux.
Una sencilla de usar en C++ : GTK.
Un editor gráfico de ventanas en Linux : Glade (gnome).

Saludos,

ps.: C-Free es una IDE, el compilador es MingW.

Última edición por HackmanC; 18/07/2008 a las 02:14 Razón: cleanup
  #7 (permalink)  
Antiguo 19/07/2008, 09:48
 
Fecha de Ingreso: julio-2008
Mensajes: 38
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Llevar a cabo acciones del sistema en c++

Cita:
Iniciado por HackmanC Ver Mensaje
En el caso de Linux no es tan sencillo como la función system().
En Linux es igual de sencillo usar system() que en Windows.

De hecho, es exactamente lo mismo.
  #8 (permalink)  
Antiguo 19/07/2008, 14:55
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Respuesta: Llevar a cabo acciones del sistema en c++

Cita:
Iniciado por Alvarodt Ver Mensaje
.... en el compilador c-free ni siquiera te deja compilar el código con system....
Cita:
Iniciado por aceutico Ver Mensaje
No uses system().
Cita:
Iniciado por aceutico Ver Mensaje
En Linux es igual de sencillo usar system() que en Windows.
De hecho, es exactamente lo mismo.
????

#include <stdlib.h>
int system(const char *string);

system() .. hace un fork y un execXX según :
gcc, g++ - GNU project C and C++ Compiler
[[ man system ]]

etc... etc...

http://www.codeguru.com/forum/showthread.php?t=438492

Última edición por HackmanC; 19/07/2008 a las 15:21 Razón: cleanup //
  #9 (permalink)  
Antiguo 19/07/2008, 16:32
 
Fecha de Ingreso: julio-2008
Mensajes: 38
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Llevar a cabo acciones del sistema en c++

Cita:
Iniciado por HackmanC Ver Mensaje
????

#include <stdlib.h>
int system(const char *string);

system() .. hace un fork y un execXX según :
gcc, g++ - GNU project C and C++ Compiler
[[ man system ]]

etc... etc...
¿Y qué me quieres decir con eso exactamente?

He dicho que system() no es la mejor opción, pero que funciona exactamente igual en Windows que en Linux, ¿qué problema ves?
  #10 (permalink)  
Antiguo 19/07/2008, 19:18
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Llevar a cabo acciones del sistema en c++

Hola,

No problemo.

Saludos,

Cita:
Iniciado por aceutico Ver Mensaje
¿Y qué me quieres decir con eso exactamente?
-- Alvarodt dice que no funciona la función system() en su compilador.
-- Tu dices que no use la función system(), aunque funciona igual de sencillo. (Me inmagino que al indicar que no use system, y aconsejar la librería #include <sys/types.h> te referías a crearlo con fork y execXX)
-- Yo digo que use fork, execXX y wait, que no es igual de fácil pero es lo mismo. (Según el manual de programador de Linux de GNU project, system() hace una llamada a fork y execXX)

-- En base a la requisito inicial y según Alvarodt que no le funciona system().
-- Yo aconsejaba usar fork, execXX ... etc. que es ANSI C, igual a system(); y es algo común de hacer.

-- El link es un ejemplo del uso de system() en Linux.
-- Las significan que no tengo ganas de escribir todo esto.

Espero haber resulto tu pregunta de que quiero decir con eso exactamente.

Saludos de nuevo, :)

Última edición por HackmanC; 19/07/2008 a las 19:44 Razón: detalle
  #11 (permalink)  
Antiguo 19/07/2008, 21:16
 
Fecha de Ingreso: julio-2008
Mensajes: 38
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Llevar a cabo acciones del sistema en c++

Cita:
Iniciado por HackmanC Ver Mensaje
-- Alvarodt dice que no funciona la función system() en su compilador.
-- Tu dices que no use la función system(), aunque funciona igual de sencillo. (Me inmagino que al indicar que no use system, y aconsejar la librería #include <sys/types.h> te referías a crearlo con fork y execXX)
No he dicho eso, perdona.

He dicho que no use system() en general si lo que necesita es controlar la creación de procesos.

Lo de que funciona igual de sencillo, me refería a que en cualquier sistema operativo system() debe funcionar exactamente igual (aunque te empeñes en mirar la implementación), NO que system() sea igual que sencillo que las funciones particulares de un sistema operativo para la creación de procesos (como fork() y exec..() en muchos sistemas).

Cita:
-- Yo digo que use fork, execXX y wait, que no es igual de fácil pero es lo mismo. (Según el manual de programador de Linux de GNU project, system() hace una llamada a fork y execXX)
Nos da exactamente igual la implementación de la llamada a system(), que en cada sistema será diferente.

Sobre si es más difícil o no, no puedes asegurarlo puesto que esas funciones no son ANSI C (que parece la causa de todo tu error, el creer semejante afirmación).

Cita:
-- En base a la requisito inicial y según Alvarodt que no le funciona system(). -- Yo aconsejaba usar fork, execXX ... etc. que es ANSI C, igual a system(); y es algo común de hacer.
Como ya te he dicho antes, eso de que fork() y las exec..() son ANSI C lo dirás tú.

Última edición por aceutico; 19/07/2008 a las 21:22
  #12 (permalink)  
Antiguo 19/07/2008, 22:04
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Llevar a cabo acciones del sistema en c++

Cita:
Iniciado por aceutico Ver Mensaje
..., eso de que fork() y las exec..() son ANSI C lo dirás tú.
Si, eso lo dije yo. :)

Saludos,
  #13 (permalink)  
Antiguo 20/07/2008, 04:47
 
Fecha de Ingreso: julio-2008
Mensajes: 38
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Llevar a cabo acciones del sistema en c++

Cita:
Iniciado por HackmanC Ver Mensaje
Si, eso lo dije yo. :)

Saludos,
Pues no es verdad. :)
  #14 (permalink)  
Antiguo 20/07/2008, 11:15
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Mensaje Respuesta: Llevar a cabo acciones del sistema en c++

Hola,

Ok.

Saludos,

Última edición por HackmanC; 20/07/2008 a las 11:22 Razón: end.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:11.