标题: 对于英雄关于重定向程序的理解?
[打印本页]
作者: tempuser
时间: 2008-12-16 11:31
标题: 对于英雄关于重定向程序的理解?
这是我学习英雄以下程序的理解,不知对不对!
@echo off
echo 英雄是好男人!!!
rem 此时,默认的1指向con,3~9指向为空
echo. 1>nul 3>nul
rem 因要修改1的指向为nul,所以要对它的原有指向con备份,所以将1的原con
rem 指向备份到3,即3指向是con
rem 而要运行3>nul,即即3指向是con也要备份到4,即4的指向变成了con
rem 执行完毕,3指向为nul,它是1原指向的备份,1从3取回备份的指向1>nul
rem 3从4中取回被份指向即3>con
echo 英雄是白痴!!!
echo 英雄是傻逼!!!
Rem 1>nul所以输出到nul,信息就不显示了
echo 这是怎么回事,难道就不能骂骂英雄吗??? 1>con 4>con
rem 要将1的指向改为con,就要对原有的句柄指向1>nul备份
rem 此时3>con非空,1的nul指向就备份到4,即4>nul
rem 而要运行4>con,所以又将4>nul备份到5即5>nul
rem 执行完毕后,4>con,所以1取回的句柄指向备份是con即1>con
ren 因为1>con所以echo信息正常输出
总结:这里我觉得难以理解的是 “进行取回原有句柄指向备份的过程”比如这个程序,如
果是取回,那么4先取回呢?则4从5>nul取回就变成了4>nul,这时1在从4取回备
份的指向,不就变成了1>nul?那么echo信息不就输出到空设备了吗?
所以我觉得这时就应该硬性理解“谁的优先级高,谁先进行取回原有句柄指向的操作”。
这里,我理解0~2比3~9的优先级高。
所以先进行1的句柄指向备份取回,此刻,4没有进行取回操作,还是4>con,那么1
从4中取回备份自然就是1>con,echo也自然输出的信息。
pause
注意,修改句柄代号指向前要对原来的句柄代号指向进行备份,并且只能将原句柄代 号指向备份到句柄指向为空的数字标号里,执行完毕后要从备份中取回句柄指向。
作者: xzyx
时间: 2008-12-16 12:48
谁先变谁先取回,这里相当于队列而非堆栈。
作者: linge
时间: 2008-12-16 13:41
没看明白,