用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