我有这个有趣的想法:将一些数据(比如整数类型的变量)写到可执行文件本身的末尾,然后在下次运行时读取它。
这可能吗?这样做是件坏事(我很确定这是:))?怎么会遇到这个问题?
附加:
我更喜欢在Linux操作系统下用C语言做这个,但是可以理解任何编程语言/操作系统组合的答案。
编辑:
经过一段时间玩这个想法后,很明显Linux在执行时不允许写入文件。但是,它允许delete它。
我现在对写作过程的看法是:
一旦我有时间,我会尽力实现。
如果有人对“删除自己”在Linux下如何工作感兴趣 - 请查看有关inode的信息。据我所知,在Windows下无法做到这一点(可能是错误的)。
编辑2:
用C实现了Linux下的工作example
它基本上使用上述策略,即将数据位附加到复制程序的末尾,删除自身并将程序重命名为原始名称。它接受整数在CLI中保存为单个参数,并且也打印旧数据。
这肯定不会在Windows下运行(虽然我在快速搜索中找到some options),但我很好奇它将如何在OS X下运行。
效率思想:
编辑3:
令人惊讶的是,它适用于OS X! (版本10.11.5,默认gcc)。