I just don't understand how a program is able to make a copy of itself if it is running. Does anybody know of any sites or resources that at least explain the concept or something? The way I think it would work would be impossible... if you typed the source code into the source code and then printed that to a file and then compiled that... but then you'd have to infinitely type that code and keep nesting and nesting, it just wouldn't work. Otherwise a running program isn't accessible to copy... Maybe it's too complicated for me to understand right now but i'd at least like to try.