[问题] shell background 差异

楼主: shihyuyao (shihyuyao)   2015-10-21 20:24:15
https://gist.github.com/anonymous/f44a39855f022c280ecd
使用 sh test1.sh 后
ps aux | grep 'my_fork' // 找不到 my_fork 父跟子行程
但是改成 sh test2.sh &
ps 可以看到my_fork 父子行程
好奇为什么把 & 写在 test1.sh 里面为什么无法看到父跟子行程?
因为我my_fork 程式里面有 getchar(); 卡住
谢谢
作者: yvb   2015-10-21 22:42:00
因为 shell script 中的 background commands,其 standard input 会被指向 /dev/null .
楼主: shihyuyao (shihyuyao)   2015-10-21 23:35:00
standard input 会被指向 /dev/null会影响 my_fork程式fork 行程出来?
作者: leolarrel (真.粽子无双)   2015-10-22 14:30:00
不是,yvb的意思是你的重点在于 getchar(); .....如果你想要让行程暂停,好让你可以用ps aux验证,那你可以用sleep 或做一些无穷回圈的事情
作者: yvb   2015-10-22 19:20:00
意思就是, stdin 被指向 /dev/null 时, getchar() 不会卡住.同样道理, 试试看 sh test2.sh < /dev/null

Links booklink

Contact Us: admin [ a t ] ucptt.com