[問題] shell background 差異

看板LinuxDev作者 (shihyuyao)時間8年前 (2015/10/21 20:24), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/1
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(); 卡住 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.104.88.20 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1445430260.A.07B.html

10/21 22:42, , 1F
因為 shell script 中的 background commands,
10/21 22:42, 1F

10/21 22:43, , 2F
其 standard input 會被指向 /dev/null .
10/21 22:43, 2F

10/21 23:35, , 3F
standard input 會被指向 /dev/null會影響 my_fork程式
10/21 23:35, 3F

10/21 23:35, , 4F
fork 行程出來?
10/21 23:35, 4F

10/22 14:30, , 5F
不是,yvb的意思是你的重點在於 getchar(); .....
10/22 14:30, 5F

10/22 14:32, , 6F
如果你想要讓行程暫停,好讓你可以用ps aux驗證,那你可
10/22 14:32, 6F

10/22 14:33, , 7F
以用sleep 或做一些無窮回圈的事情
10/22 14:33, 7F

10/22 19:20, , 8F
意思就是, stdin 被指向 /dev/null 時, getchar() 不會卡住.
10/22 19:20, 8F

10/22 19:23, , 9F
同樣道理, 試試看 sh test2.sh < /dev/null
10/22 19:23, 9F
文章代碼(AID): #1M9uFq1x (LinuxDev)