PDA

Prikaži potpunu verziju : Samoreplicirajuci programi


pivonroll
17.6.2007, 17:31
Pre neki da sam na faxu prvi put video kod samoreplicirajuceg programa pa me zanimaju vasa iskustva iz iste oblasti.
Evo i koda programa:

main()
{char q=34,n=10,*a="main () {char q=34,n=10,*a=%c%s%c; printf(n,q,a,q,n);
}%c";
printf( a,q,a,q,n);
}

Probajte pa da vidite sta cete dobiti.

voodoo_
17.6.2007, 18:47
Pod Unixima se može koristiti fork() sa kopiranje trenutnog procesa sa aktuelnim kontekstom. Pod Windowsom, CreateProcess. Iskreno, ovo sa mainom u mainu prvi put vidim.

pivonroll
17.6.2007, 19:44
Bas ta fora main u main-u.
Mislim ovde je kod celog programa u stringu a (ili *a kako hocete). Ali program ispisuje taj string i onaj printf koji ide posle tj. ceo kod programa.E tu zabagujem skroz.

M.Silenus
18.6.2007, 12:59
Hmm, što mi je ovo poznato.
Na kom si fakultetu i iz koje knjige ( nemoj mi samo reći da su Mitićevi Osnovi Računarskih Sistema )?

fork pravi identičnu kopiju procesa iz koga se poziva. Vraća -1 ako nije uspelo, inače vraća dve vrednosti, jednu za dete drugu za roditelja, i to 0 u dete-procesu ili pid deteta procesa u roditeljskom.

...
if((pid=fork())<0)
fatal_error();
else if(pid==0)
/* u dete-procesu smo*/
else
/* u roditeljskom procesu smo*/
...

Za detalje, pogledati Richard Stevens, Advance Programming in UNIX Enviroment.