• Martes 30 de Abril de 2024, 21:45

Autor Tema:  funcion system en linux  (Leído 4485 veces)

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
funcion system en linux
« en: Domingo 24 de Agosto de 2008, 17:08 »
0
hola gente!

estoy haciendo un programa que compare dos directorios y diga si son iguales o no, y si no lo son que muestre la ruta del/los archivo/s que difieren, para hacerlo pense en usar la funcion system que recibe una cadena como parametro y la ejecuta como si estubieras en la terminal, pero al hacerlo (trabajo bajo ubuntu 8.04) me tira errores, o simplemente me duestra el directorio raiz y no el directorio que le digo. Viendo esto, pense en emular simplemente una terminal (para eliminar cualquier problema ajeno a esa funcion) y sigo teniendo el mismo problema.

Código: Text
  1. #include <stdlib.h>
  2.  
  3. int main (void){
  4.     system("cd /home");
  5.     system("dir > /home/rombus/Escritorio/aaa.txt");
  6.  
  7.     return 0;
  8. }
  9.  

En el codigo anterior lo que pretendo es hacer un cd al directorio /home y luego hacer un dir redireccionando la entrada/salida estandar a un fichero que esta en mi escritorio. Lo que obtengo es el fichero con los directorios del escritorio (donde esta el programa) no los directorios del /home.

Alguien sabe a que se puede deber este problema?


gracias!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: funcion system en linux
« Respuesta #1 en: Domingo 24 de Agosto de 2008, 17:12 »
0
Dir es un comando de MS-DOS, mejor usa ls ... y | en lugar de >.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: funcion system en linux
« Respuesta #2 en: Domingo 24 de Agosto de 2008, 17:40 »
0
que buen dato! gracias!

no sabia que existia el ls, yo probe con dir y como andubo pense que tenia las mismas instrucciones.

En cuanto a lo de | en ves de > me tira el siguiente error

rombus@Rombus:~/Escritorio$ ls | aa.txt
bash: aa.txt: orden no encontrada


estoy utilisando mal en | ?



gracias por responder tan rapido :)

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: funcion system en linux
« Respuesta #3 en: Domingo 24 de Agosto de 2008, 18:04 »
0
Código: C
  1.  #include <stdlib.h>
  2.  
  3. int main (void){
  4.      system("cd /home");
  5.      system("pwd");
  6.  
  7.      return 0;
  8. }
  9.  

En este caso, system no te sirve para hacer un cd... como se ve en este codigo, el system("cd /home") solo cambia el path en la ejecucion, dejando al programa en el path donde se ejecuto.

Para cambiar el path correctamente, hay que usar chdir de unistd.h

Cita de: "Eternal Idol"
Dir es un comando de MS-DOS, mejor usa ls ... y | en lugar de >.
pipe o "|" es para usar la salida de un programa en el STDIN de otro, > es para redireccionar la salida a un archivo... asi que > es correcto.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: funcion system en linux
« Respuesta #4 en: Domingo 24 de Agosto de 2008, 18:29 »
0
Ah bien, entonces el camino mas corto:

Código: Text
  1.  
  2. system("ls /home > /home/rombus/Escritorio/aaa.txt");
  3.  
  4.  

O como te dijo su- con chdir en luga de cd.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: funcion system en linux
« Respuesta #5 en: Domingo 24 de Agosto de 2008, 22:34 »
0
Excelente!

anda perfectamente, y en sima mas corto que con el metodo que planteaba yo.


muchas gracias a ambos!

sobretodo por responder tan rapido


saludos!