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!!!
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


0