Tmp files from in-process pipes not deleted

May 20, 2008
10,674
83
Syracuse, NY, USA
I looked more closely at this. Each time I use "tasklistr |! egrep | sort" (twice, below. one in-process pipe, one normal pipe) I get a new PIP*.tmp file. Below that, when both pipes are in-process, I don't get a new PIP*.tmp file. "t:\" is %TEMP and d = *dir /a /p /m /k /h /ne.
Code:
v:\> d t:\pip*

v:\> tasklist |! egrep -v "svchost" | d:\gnu\sort -k2 -f > nul

v:\> d t:\pip*
2019-09-28  13:13           2,868  PIPD77.tmp

v:\> tasklist |! egrep -v "svchost" | d:\gnu\sort -k2 -f > nul

v:\> d t:\pip*
2019-09-28  13:14           2,868  PIP29AB.tmp
2019-09-28  13:13           2,868  PIPD77.tmp

v:\> tasklist |! egrep -v "svchost" |! d:\gnu\sort -k2 -f > nul

v:\> d t:\pip*
2019-09-28  13:14           2,868  PIP29AB.tmp
2019-09-28  13:13           2,868  PIPD77.tmp

v:\>
 
May 20, 2008
10,674
83
Syracuse, NY, USA
Here's the same experiment (as in my last post) with only TCC and Windows built-ins.

Code:
v:\> tasklist |! findstr foo | sort > nul

v:\> d t:\pip*
2019-09-28  13:22           2,665  PIP90A3.tmp

v:\> tasklist |! findstr foo | sort > nul

v:\> d t:\pip*
2019-09-28  13:22           2,665  PIP90A3.tmp
2019-09-28  13:22           2,665  PIPD435.tmp

v:\> tasklist |! findstr foo |! sort > nul

v:\> d t:\pip*
2019-09-28  13:22           2,665  PIP90A3.tmp
2019-09-28  13:22           2,665  PIPD435.tmp

v:\>
 
Apr 2, 2011
1,293
3
53
North Carolina, USA
I looked more closely at this. Each time I use "tasklistr |! egrep | sort" (twice, below. one in-process pipe, one normal pipe) I get a new PIP*.tmp file. Below that, when both pipes are in-process, I don't get a new PIP*.tmp file. "t:\" is %TEMP and d = *dir /a /p /m /k /h /ne.
Code:
v:\> d t:\pip*

v:\> tasklist |! egrep -v "svchost" | d:\gnu\sort -k2 -f > nul

v:\> d t:\pip*
2019-09-28  13:13           2,868  PIPD77.tmp

v:\> tasklist |! egrep -v "svchost" | d:\gnu\sort -k2 -f > nul

v:\> d t:\pip*
2019-09-28  13:14           2,868  PIP29AB.tmp
2019-09-28  13:13           2,868  PIPD77.tmp

v:\> tasklist |! egrep -v "svchost" |! d:\gnu\sort -k2 -f > nul

v:\> d t:\pip*
2019-09-28  13:14           2,868  PIP29AB.tmp
2019-09-28  13:13           2,868  PIPD77.tmp

v:\>

What is your D alias equal to?
 

rconn

Administrator
Staff member
May 14, 2008
11,952
133
Same response as when you reported this several years ago: TCC does (try to) delete the temporary pipe file, but Windows blocks it because your child process is still reading it.

In process pipes were a kludge for users who were having trouble adapting to real pipes (20 years ago). They are hopelessly obsolete, and I do not intend to expend any effort enhancing them now.

p.s.: All they're doing is an output redirection followed by an input redirection.
 

Charles Dye

Super Moderator
Staff member
May 20, 2008
4,233
78
Albuquerque, NM
prospero.unm.edu
In process pipes were a kludge for users who were having trouble adapting to real pipes (20 years ago). They are hopelessly obsolete, and I do not intend to expend any effort enhancing them now.

p.s.: All they're doing is an output redirection followed by an input redirection.
I'm guessing that the in-process pipe code was largely ported from 4DOS....