C Brain Teaser


 
Thread Tools Search this Thread
Top Forums Programming C Brain Teaser
# 8  
Old 05-10-2007
Code:
    return (unlink (argv[0]));

Would turning off permissions instead of unlinking work on HP-UX?
Code:
   return (chmod (argv[0],0));

# 9  
Old 05-10-2007
Quote:
Originally Posted by kahuna
Would turning off permissions instead of unlinking work on HP-UX?
That operation would be legal. It's not clear that this would be enough to satify the condition of the challenge. A chmod command would reverse that. The challenge seems to imply a more complete form of self-destruction such that a second compile of the source code would be in order.
# 10  
Old 05-10-2007
OK, here is my version. It assumes that rm is /usr/bin/rm. If your rm is elsewhere you will need a little change.
Code:
#include <stdio.h>
#include <unistd.h>
main(int argc, char *argv[])
{
        printf("Hello, world... for now!\n");
        execl("/usr/bin/rm", "rm", argv[0], 0);
}

# 11  
Old 05-11-2007
Well, this would work. Your binary file becomes non-ETXTBSY the moment the execl is run. So no problem removing it.
# 12  
Old 05-11-2007
How about this approach,

After printing the statement,
copying /dev/null to the binary
or
making the binary 0 bytes.

Binary would be still available but unable to use for the second time

I believe this would work for the challenge posted!
# 13  
Old 05-11-2007
This is another way of going about it:
Code:
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
main(int argc, char *argv[]) {
        int fd;
        char buf[]="0000000000";
        fprintf(stdout,"Hello, world... for now!\n");
        fd=open(argv[0],O_WRONLY);
        if(fd==-1) {
                perror("Could not open file");
        }
        if((write(fd,buf,strlen(buf)))==-1) {
                perror("Could not write to file");
        }
        close(fd);
}

You can run this only once. Tested on Solaris 10. Dunno about HP-UX. Am trying to get a system so that I can test this.

-Edit:
You won't know what has happened either. The file is still there, still the same size too, but it won't run anymore.
# 14  
Old 05-11-2007
This is something interesting.

I wonder how it worked on solaris.

It didnt when I tried on FC3 ( as expected )

It is not possible to write an exe file when it is in use or busy. Same thing happens when a program which is running for hours together when updated with a new copy of the binary; the operation will is not permitted. Would say the text file is currently busy.

This is the error when ran in FC3
Code:
Could not open file: Text file busy
Could not write to file: Bad file descriptor


I could find that after perror the operation still continues to write to the file without a valid file descriptor which is not the proper way.
Login or Register to Ask a Question

Previous Thread | Next Thread

6 More Discussions You Might Find Interesting

1. What is on Your Mind?

Cyber Dystopia Teaser (720 HD)

Working on a new cybersecurity, dystopian world series and made a short 2 min teaser today. Cyber Dystopia (720 HD) https://www.youtube.com/watch?v=g9Ca07J_YC8 If anyone has any ideas for the story, please write out some story lines in the comments and join the production team! (1 Reply)
Discussion started by: Neo
1 Replies

2. Shell Programming and Scripting

sed regexp teaser

G'day, Here's a teaser for a sed guru, which I surely am not one, as even my basic sed skills are rusted from years of not practising ... lol Ok ... we have a string of digits such as: 632413741610252847552619172459483022433027602515212950543016701812771409213148672112 we want it split... (9 Replies)
Discussion started by: naderra
9 Replies

3. What is on Your Mind?

The Human Brain project

A global group of scientists are spending the next ten years and a billion dollars to try and develop a computer simulation of the brain: https://www.humanbrainproject.eu/ I always found it fascinating that the brain can understand itself. This almost sounds like in a few years the computer... (0 Replies)
Discussion started by: figaro
0 Replies

4. Programming

Brain Teaser Extended

Hi Gurus, To the Brain Teaser, if I add another condition, say the executable should not be altered, how the program should be altered? (no perl please, purely C). I forgot to mention this condition my staff had mentioned. ( forgot then and got now :D ) The program executed the first time... (4 Replies)
Discussion started by: vrk1219
4 Replies

5. Shell Programming and Scripting

This might be a programming teaser!

Hi gurus, I have done my best to be as precisely as possible with this. Besides giving the format of file a and file b and the result file I have also given the algorithm as I have figured out. I will try to do this and I hope that some of you could help me to solve this or better yet... (1 Reply)
Discussion started by: ljankok
1 Replies

6. Shell Programming and Scripting

Brain Bench Certification

Hi, Can anybody provide me Pointers to Practice tests or any Material to prepare for Brainbench certification in Unix Shell Scripting? Also how good is this Certification for UNIX programmers. Is it worth it? I'm planning to take this certification in 2 weeks. Kindly let me know all the pros... (0 Replies)
Discussion started by: pavan_emani
0 Replies
Login or Register to Ask a Question