Linux - Ayuda con 1programa con funcions d open, create...

 
Vista:

Ayuda con 1programa con funcions d open, create...

Publicado por Nathan (1 intervención) el 27/10/2004 20:28:49
Me voy ha explicar, yo he hecho un programa que simula el cp de linux se llama micp y la sintaxis es "micp fuente destino" tiene tratamiento de errores por si esta mal escrita la sintaxis o no se puede leer bien el archivo y eso.

La prueba es un archivo simpre que contiene "abc", genera otro de diferente nombre igual.

El código es este:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "mi_const.h"
#include "mi_error.h"

int main(int argc, char *argv[])
{

//argc contiene el número de argumentos y argv los argumentos

int font, desti, aux;
char c;

if(argc!=3) esc_error("Error de comando: micp fuente destino",PROPI,FALSE);

font=open(argv[1],O_RDONLY);

if(font==-1) esc_error("Error en la obertura del archivo fuente",SISTEMA,TRUE);

desti=creat(argv[2],0700);

if(desti==-1) esc_error("Error en la creacion del archivo destino",SISTEMA,TRUE);

aux=read(font,&c,sizeof(char));

if(aux==-1) esc_error("Error de lectura en el archivo fuente",SISTEMA,TRUE);

while(aux>0)
{
aux=write(desti,&c,sizeof(char));

if(aux==-1) esc_error("Error en la escritura en el archivo desti
no",SISTEMA,TRUE);

aux=read(font,&c,sizeof(char));

if(aux==-1) esc_error("Error de la lectura en el archivo fuente"
,SISTEMA,TRUE);
}
close(font);
close(desti);
}

No se si necesitareis tambien el programa de mi_error.c y mi_const.c, pero creo que ya se supone por donde van los tiros, si lo necesitais para saber como hacer mi duda me los pediis y los pego.

Weno, una vex hecho este programa, me han pedido una operación con la sintaxis "micp -o fuente destino", que lo único que hace es que si el archivo destino existe el programa aborta sin hacer nada mas, weno podria imprimir un error o algo por pantala.
He visto un post parecido a este problema pero no una las funciones de llamadas al sistema.

Mi idea seria:

si existen 4 argumentos (micp -o fuente destino) && el segundo es '-o'
entonces miramos que el archivo destino no exista con una operacion
open, con el parámetro que lo determine pero no se cual es y si existe
pues abortar el programa con su debido error y si el segundo parametro
no era -o dar un error de sintaxis.

Haber si me podeis ayudar...gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con 1programa con funcions d open, create

Publicado por n0str0m0 (1503 intervenciones) el 28/10/2004 16:07:51
Creo que también podrías detectar la presencia del fichero con stat.
man stat

Las opciones son pocas, pero para cuando tengas que procesar mayor número de argumentos, usa una función llamda getopt.

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar