PDA

Ver la versión completa : duda de c



<PICCOLO>
24-11-2002, 21:58
hay alguna funcion en c que permita al programa hacer una copia de sí mismo?:confused:

POSIX
25-11-2002, 01:09
Si te pudieras explicar algo más se agradecería, yo no comprendo lo que quieres hacer, para hacer una copia de si mismo donde? en memoria? en el disco duro? no se, explicate!

Giskard
25-11-2002, 02:20
¿te refieres a algo así como un worm?

talvez sea posible con la funcion system (no recuerdo de qué librería es), por ejemplo si tu programa se llama programa.exe (pensé mucho en ese nombre :P)

system("copy programa.exe program2.exe");

espero sirva de algo.
saludos

<PICCOLO>
25-11-2002, 12:08
si, me referia a copiarse como un worm, lo probaré gracias giskard

POSIX
25-11-2002, 14:18
eso de system es una chapuza increible, lo que puedes hacer es lo siguiente...

(Todo es utilizando el estandar POSIX)

int copy_file(char *src, char *dst) {
int fd_src, fd_dst;
ssize_t c;
char buf[MAX_NAME_SZ];

if ((fd_src=open(src,O_RDONLY))==-1) return -1;

if ((fd_dst=open(dst,O_WRONLY | O_TRUNC | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR))==-1)
return -1;

while((c=read(fd_src,buf,MAX_NAME_SZ)) > 0)
write(fd_dst,buf,c);

close(fd_src);
close(fd_dst);

return 0;
}

int main(int argc, char **argv) {
if (copy_file(argv[0], argv[1])) {
perror("copy_file()");
exit(-1);
}

printf("Fichero copiado satisfactoriamente\n");

return 0;
}