用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 @ 2023-06-05 21:10  败人两字非傲即惰  阅读(156)  评论(0编辑  收藏  举报