用c实现:编译出来的可执行文件运行完成后删除自己

没办法。可执行文件和bat脚本文件不一样,它运行时会被加锁,无法获取写权限。
原由:
因为每次编译一个c文件后都会生成一个exe文件,占用了我的视野资源,所以我每次都要定期运行一个批处理脚本来清理这些文件。
于是我就想,exe文件自己不是也有运行权限吗,它能不能自己获取自己的写权限在执行完任务后将自己删除呢?就像进程一样,运行时才创建用完后删除。
最后采取的方法:

方法一:
1.在stdio.h中加入
#define cle system("那个批处理脚本的文件名");
2.在VSCode 的用户代码片段的main片段中写入system("那个批处理脚本的文件名");
虽然,没办法实现当前执行的exe文件,但是可以清除之前生成的exe文件,也不错
那个批处理脚本内容如下:

@echo off
@REMecho 当前运行的bat文件名:%~nx0
@REMecho 当前运行的bat文件所在的路径:%~dp0
@REMecho 当前运行的bat文件的路径加文件名:%~f0
cd %~dp0
@REM echo Are you sure?
@REM pause
del /q /a /s /f *.exe
del /q /a /s /f *.stackdump
del /q /a /s /f tempCodeRunnerFile.c

 方法二:
VSCode在Windows的cygwin64下的配置:
ctrl+shift+p-> 搜索用户settings.json-》选择打开用户JSON-》在该settings.json的"code-runner.executorMap"

第一层大括号中加入:

    "c": "cd $dir ; if ($?) { gcc $fileName -o $fileNameWithoutExt } ; if ($?) {./$fileNameWithoutExt} ; rm $fileNameWithoutExt.exe",
    "cpp": "cd $dir ; if ($?) { g++ $fileName -o $fileNameWithoutExt } ; if ($?) {./$fileNameWithoutExt} ; rm $fileNameWithoutExt.exe",

 VSCode在Ubuntu20.02中运行代码的的配置

ctrl+shift+p-> 搜索用户settings.json-》选择打开用户JSON-》在该settings.json的"code-runner.executorMap"第一层大括号中加入:

    "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt && rm $fileNameWithoutExt",
    "c++": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt && rm $fileNameWithoutExt",
其他方法见:
https://tieba.baidu.com/p/8446703124?pid=147777312203&cid=0#147777312203
posted @   败人两字非傲即惰  阅读(189)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示