While your question remains confusing even after the edit, I think you've said enough to identify what you're doing wrong.
any binary(c hello world)
You cannot execute a mmaped binary file in the same way that the OS executes it. You're running on Linux so your hello world is likely a binary in the ELF format. Linux knows how to read and execute ELF binaries, your program doesn't. The ELF starts with a header and so your memory-mapped data also starts with the header. Which is not executable code. The header starts with 0x7F, which corresponds to the jg instruction on x86, so attempting to 'execute' an ELF header as executable code would possibly (depending on the status of your flags) immediately jump to a garbage address built up of the next bytes of the header.
If you want to run code like this, you'll need to parse the ELF file, find its entry point (or, likely, the .init section first) and start executing code from there. You should certainly feel free to do this as an exercise, for learning purposes, but that is not the normal way of executing another program from your own. A typical approach would be to use the fork and exec calls instead. That lets Linux handle the technicalities of launching the program.