мне нужно распаковать файл в именованный канал вернуть его:FIFO-файл в TCL
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 &
Согласно [mkfifo руководство] (http://linux.die.net/man/3/mkfifo), такой файл должен быть открыт одновременно чтение и письмо. Это означает, что кому-то нужно прочитать данные, которые вы распаковываете в него. Кто-нибудь читает, что вы разархивируете в файл mkfifo? – Bogdan
Да, он будет прочитан после вызова функции, поэтому gunzip выполняется в фоновом режиме. –