Re: [ CN ] 有关作业一Spec

楼主: ckmShih (林檎技客 Ringo Geek)   2013-10-21 14:12:14
※ 引述《q82419 (q82419)》之铭言:
: 1.想请问这种情形:
: $ cat test.txt |2
: $ ls > test.txt
: $ cat
: 第一个cmd的结果要pipe进第三个cmd的input
: 可是第二个cmd把ls的结果output到test.txt
: 那第三个cmd出来的结果会是ls的output还是原本的test.txt?
: 意思是,
: $ cat test.txt |2 (cmd1) $
: $ ls > test.txt (cmd2) 跟 $ ls > test.txt 是否相等?
: $ cat (cmd3) $ cat test.txt
: (往后pipe的command是否能在需要他的output时再exec?)
每一行的cmd在该行就会执行
故以同学的例子来说
第三行cmd出来的结果还是原本的test.txt
: 2.如果cat grep没有给file name的话是从stdin输入
: 假设在cat前没有任何一个command的stdout pipe到cat的stdin
: 那要怎么处理?从client read?
不会出现无限等待 client input 测资
也就是可能会有
%cat "test.txt" | grep s
但不会单独只有
%grep s
: 3.之前助教回答,若一行中有任何的command错误,则该行放弃
: $ cat test.txt |2 (cmd1)
: $ 123456789 (cmd2) (wrong)
: $ cat (cmd3)
: $ cat (cmd4)
: 如果有要pipe到后面的command,在图中遇到错误的command如上,
: 那是cmd3的cat还是cmd4的cat接到cmd1的output?
: (错误的command是否直接跳过不影响pipe?)
错误的cmd行数照算
故以同学的例子来说
是cmd3的cat接到cmd1的output
: 4. printenv, setenv的指令
: 是否是单独指令,不会跟pipe有关?
: $ cat test.txt | printenv(setenv PATH)
: $ printenv(setenv PATH) |2
: 这两种情形是否能直接判断为不合法?
: $ cat test.txt |1
: $ printenv(setenv PATH)
: 是否不用理会cat的output直接做printenv或setenv?
我们假设 printenv, setenv的指令会忽略 stdin 的内容
这部份你可以到工作站去试试像 echo "dsfgds" | ls 这样的指令
shell 给你的结果跟单独 ls 有何不同
就会知道该如何处理
: 5.
: 考虑到一次将结果送回client,
: 如果档案太大buffer设不够多的话会overflow
: 档案大小是否有一个确切的限制?
: 或者有除了一次送回结果以外建议的处理方式?
: 谢谢
测试文字档案大小不会超过 2048 bytes
但请注意一个指令最多可能会要求印出十个档案的内容
TA

Links booklink

Contact Us: admin [ a t ] ucptt.com