C Brain Teaser


 
Thread Tools Search this Thread
Top Forums Programming C Brain Teaser
# 1  
Old 05-09-2007
C Brain Teaser

Dear Gurus,
I have encountered a C question, which I thought of sharing with you.
This question was asked by one of my technical training staff...Though my training was over I'm still thinking of a solution for this..

Write a C program to do a small task(lets say just simply printing a "Hello World" or so) such that the program should only give output or the desired result ony once after it got compiled and should never give the output nor do anything else. The program should not make use of files or any extrnal means of storing some data.

Please suggest me some ways of achieving this...

Regards
RK
This User Gave Thanks to vrk1219 For This Post:
# 2  
Old 05-09-2007
Quote:
Originally Posted by vrk1219

Write a C program to do a small task(lets say just simply printing a "Hello World" or so) such that the program should only give output or the desired result ony once after it got compiled and should never give the output nor do anything else. The program should not make use of files or any extrnal means of storing some data.
You did not place any restrictions on what not to do. One way could be to remove yourself after the program execution.
Code:
[/tmp]$ cat try.cpp
#include <stdio.h>
#include <unistd.h>

int main (int argc, char* argv[])
{
    printf ("Bye Bye Cruel World :-( \n");
    return (unlink (argv[0]));
}
[/tmp]$ gcc -o try try.cpp -lstdc++
[/tmp]$ ls -l try
-rwxr-xr-x  1 xxxxxx g900 5202 May  9 02:51 try
[/tmp]$ ./try
Bye Bye Cruel World :-( 
[/tmp]$ ls -l try
ls: try: No such file or directory
[/tmp]$

# 3  
Old 05-09-2007
Astounding that that works, vino! Looking at the Linux man page for unlink(2), I see that it does not detect "text busy". Compare that to the HP-UX man page for unlink(2). The Linux unlink(2) is rather permissive. If that man page is right, it even allows unlinking an active mount point! I'm not sure what effect that would have... Posix does not require that unlink(2) disallow unlinking mount points (but the text in the standard makes it clear that this is because Posix does not ever mention mount points). But unlinking an active program is another matter. On one hand, the Posix Standard says:
Quote:
The unlink() function shall fail and shall not unlink the file if:
...
[ETXTBSY] The entry to be unlinked is the last link to a pure procedure (shared text) file that is being executed.
That sounds to me like an OS is required to disallow the operation. But toward the end of the page we have:
Quote:
The [ETXTBSY] optional error condition is added.
This leaves me confused as to whether or not the operation is allowed by Posix. But it will not work on most implementations of Unix. I would be interested if this program works with any kernel other than Linux.

A more portable solution would be have the program to write a little shell script to unlink the file and then exec that shell script.
# 4  
Old 05-09-2007
I just tested on Solaris 10, t1000 server, seems to be working :
Quote:
[root@t1000-2 home]# gcc -o try try.cpp -lstdc++
[root@t1000-2 home]# ./try
Bye Bye Cruel World :-(
[root@t1000-2 home]# ls -l try
try: No such file or directory
# 5  
Old 05-09-2007
Does not work on HPUX 11i, as expected.
# 6  
Old 05-10-2007
it works on RHEL3 !
# 7  
Old 05-10-2007
Quote:
Originally Posted by matrixmadhan
it works on RHEL3 !
It will work on any OS using a Linux kernel. This includes Red Hat. It is interesting that it works on Solaris though. I have always thought that ETXTBSY was silly. Of course you can't a program while it is running. But there is no reason to prohibit the unlink. The file will have zero links but will not be deleted until the reference count is also zero. This is the way data files have always been handled in Unix.
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