![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Wrapping Your Brain Around Oracle + Python | iBot | Oracle Updates (RSS) | 0 | 04-06-2008 02:10 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
#8
|
||||
|
||||
|
Code:
return (unlink (argv[0])); Code:
return (chmod (argv[0],0)); |
| Forum Sponsor | ||
|
|
|
#9
|
||||
|
||||
|
Quote:
|
|
#10
|
||||
|
||||
|
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
|
||||
|
||||
|
Well, this would work. Your binary file becomes non-ETXTBSY the moment the execl is run. So no problem removing it.
|
|
#12
|
|||
|
|||
|
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
|
||||
|
||||
|
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);
}
-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
|
|||
|
|||
|
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. |
|||
| Google The UNIX and Linux Forums |
| Tags |
| linux |
| Thread Tools | |
| Display Modes | |
|
|