
Code that will only execute once - hawkharris
http://codegolf.stackexchange.com/questions/28672/code-that-will-only-execute-once
======
codeflo
On POSIX systems, this challenge is trivial because you can unlink ("delete")
an executable while it's running. The file is then actually deleted once the
program exits.

On Window, you can muck around with child processes that delete their parent.
Perhaps more interestingly, you could try to abuse Software Restriction
Policies [1]. In theory, you should be able to blacklist your own executable
(by hash), so that it can't run ever again. This would also block any copy of
the file that you might have kept.

[1] [http://technet.microsoft.com/en-
us/library/bb457006.aspx](http://technet.microsoft.com/en-
us/library/bb457006.aspx)

------
call
This sort of reminded me of Phillip K. Dick's art book ___Agrippa_ __[1],
which was given a limited release on a floppy disk that would corrupt itself
after its contents are displayed on a computer.

[1]
[https://en.wikipedia.org/wiki/Agrippa_%28A_Book_of_the_Dead%...](https://en.wikipedia.org/wiki/Agrippa_%28A_Book_of_the_Dead%29)

~~~
herokusaki
You mean William Gibson's. Note how despite the author's intentions (or
perhaps because of them) "pirated text of the poem was released the next day
on MindVox."

~~~
schoen
I was a bit obsessed with that poem (and the fact that it leaked!) in high
school.

I still think it was well-done and love the theme of "the mechanism".

------
afternooner
I could argue that if you work for the DOD, it's entirely possible that all
your code will only execute once. Sadly, I do work for a government agency,
but my code only runs once because of mismanagement... :(

------
FatalLogic
Damaging the 'environment' was allowed, so it's disappointing not to see any
code that tries to disable or destroy the hardware by:

* Overheating or overvolting the CPU, GPU or other components

* Erasing boot firmware or boot settings stored in flash memory (and rebooting)

I know there are protection mechanisms, which may be impossible to circumvent,
but you can try...

~~~
maaku
There was the HCL (halt-and-catch-fire) opcode as a submission...

~~~
FatalLogic
That opcode promises so much, but delivers so little :/

------
carrotleads
exe's can store their own resources and that includes binary files.

Store a child exe within a parent exe.

When parent exe is run first, it should extract child exe, run it, do whetever
it wants and quit.

Child exe's job is to see if parent exe has finished execution. Can be done by
searching for windown handle or string.

When parent exe is no longer running, child exe should delete parent and quit.

Satisfies the requirement that parent exe's code will only run once if there
is only one distribtion of exe.

------
ingenieros
Is this challenge being sponsored by Monsanto?

------
kylek
My first thought (from a sysadmin view, and only reading the title ;) ) is -
firstboot scripts that only run once? The question sounds like they're looking
for something a little more malicious I guess?...

~~~
vezzy-fnord
Actually, bootscripts would probably count. The authors here mean code that
can only run once and will unconditionally fail if it is executed more than
once (such as #!/bin/rm), but a few of the examples can only be run once _per
session_ , which bootscripts would likely fit in.

------
drdeadringer
For an easter egg and bonus points:

Somehow involve Inspector Gadget's boss -- reading the instructions to you, a
dot-picture, the sound of a muffled explosion in a trash can, whatever. "This
script will self destruct in five seconds."

~~~
vog
Why being so cautious? You can do it mission impossible style ... destroying
the whole computer on which the message was displayed - with a white, thick
and nasty smoke.

------
rokhayakebe
1) Create a file unlink.php in your php environment

2) Paste this in it _<?php unlink('unlink.php');_

3) Visit unlink.php on your browser

~~~
leepowers
With short open tags enabled the example can be simplified further as
_<?unlink(__FILE__);_

~~~
MattBearman
It's been a couple of years since I programmed in PHP, but I'm pretty sure if
it's the EOF you don't even need the final semicolon, so:

    
    
      <?unlink(__FILE__)

~~~
dylz
Short tags (other than echo <?=) are no longer on by d efault

------
faster
Back in the 80's the group I worked with got a VAX with VMS. Files are
versioned in VMS, and you can delete specific versions. So we used that to
prank each other for a while, editing someone's login script and deleting the
newest version so they couldn't send the same prank back to you.

------
cousin_it
This reminded me of the ~ATH ("till death") programming language from the
webcomic Homestuck:
[http://www.mspaintadventures.com/?s=6&p=003925](http://www.mspaintadventures.com/?s=6&p=003925)

------
jim_lawless
In Windows, the program should check for the presence of a unique, global atom
via GlobalFindAtom(). If present, terminate. If not present, create the atom
with GlobalAddAtom() and continue the initial execution of the program.

------
known
[https://en.wikipedia.org/wiki/Singleton_pattern](https://en.wikipedia.org/wiki/Singleton_pattern)

------
ColinCera
I thought this was going to be an article about software demos.

------
sly_g
pity it's closed. in perl in would be: unlink $0

