如何从gcc链接器中抑制以下警告:
警告:使用'mktemp'很危险,更好用'mkstemp'
我知道它最好使用mkstemp()但由于某种原因我必须使用mktemp()功能.
我创建了一个将多个程序连接在一起的管道,不幸的是,这些程序在文件夹中创建了大量临时文件/tmp,并且在使用大型数据集时,我的管道因/tmp文件夹已满而崩溃。
如何导出临时文件,以便在运行管道的当前工作目录中而不是文件夹中创建它们/tmp?
目前,我尝试将TMPDIRenv 变量导出到当前工作目录中已创建的目录/work,但临时文件仍在该文件夹中创建/tmp:
export TMPDIR=$(mktemp -d --tmpdir=/work)
<script>
rm -rf $TMPDIR
Run Code Online (Sandbox Code Playgroud)
该程序无法为创建的临时文件设置不同的输出文件夹。
使用下面的perl代码,我尝试在随机生成的文件中输出一些名称.但文件是用奇怪的字符创建的,如下所示:
"SNP一览boo.dwjEUq5Wu ^ J.txt"
而且,显然当我的代码查找这些文件时,它说不是这样的文件.此外,当我尝试使用"vi"打开文件时,它们会像这样打开
vi 'temporary-files/snp-list-boo.dwjEUq5Wu
.txt'
Run Code Online (Sandbox Code Playgroud)
即文件名中带有"新行".有人请帮助我理解并解决这个奇怪的问题.非常感谢!
码:
my $tfile = `mktemp boo.XXXXXXXXX`;
my $fh = "";
foreach my $keys (keys %POS_HASH){
open ($fh, '>>', "temporary-files/snp-list-$tfile.txt");
print $fh "$keys $POS_HASH{$keys}\n";
close $fh;
}
Run Code Online (Sandbox Code Playgroud)