我需要将文件解压缩到命名管道中并返回:
proc unzip_file_if_needed { fileName } {
if { [file extension $fileName] != ".gz" } {
return $fileName;
}
set tmpDir [fileutil::tempdir]
set tmpFileName [ file join $tmpDir [ pid ] ]
if { [file exists $tmpFileName ] } {
file delete $tmpFileName
}
exec mkfifo $tmpFileName
exec gunzip -c $fileName > $tmpFileName &
return $tmpFileName
}
它挂着 exec gunzip -c $fileName > $tmpFileName &
我以这种方式解决了这个问题:
proc unzip_file_if_needed { fileName } {
if { [file extension $fileName] != ".gz" } {
return $fileName;
}
set tmpDir [fileutil::tempdir]
set pId [pid]
set tmpFileName [ file join $tmpDir pId ]
set unzipCmd [ file join $tmpDir [ append pId "cmd.sh" ] ]
if { [file exists $tmpFileName ] } {
file delete $tmpFileName
}
if { [file exists $unzipCmd ] } {
file delete $unzipCmd
}
set cmdDesc [open $unzipCmd { CREAT EXCL RDWR} 0777]
puts $cmdDesc "\#!\/bin\/bash\n gunzip -c \$1 > \$2"
close $cmdDesc
exec mkfifo $tmpFileName
exec $unzipCmd $fileName $tmpFileName >&@1 &
return $tmpFileName
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句