[問題] fork父行程異常中斷問題

看板Linux作者 (huss)時間14年前 (2011/12/21 19:31), 編輯推噓0(0014)
留言14則, 2人參與, 最新討論串1/1
不好意思 想請問一下 假如子行程還在執行 父行程也有用了wait()在等 可是今天如果子行程還沒執行完 父行程就突然異常終止 譬如是 網路斷線 或強制關掉 這樣是不是就沒辦法也把子行程帶走 子行程還會留著 請問這個要怎麼解決 當父程序異常終止的時候 有辦法讓子程序知道嗎 謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.169.163.34

12/21 23:19, , 1F
父行程 catch SIGHUP(terminal), SIGIO(network),然後kill
12/21 23:19, 1F

12/21 23:20, , 2F
子行程,看用約定哪個signal.
12/21 23:20, 2F

12/22 02:07, , 3F
謝謝樓上 可以再說清楚一點嗎 怎麼catch到呢
12/22 02:07, 3F

12/22 07:28, , 4F
說來話長,建議查書籍或相關資料,要視父行程的工作方式決定
12/22 07:28, 4F

12/22 07:29, , 5F
要怎麼做,最簡單情況只要呼叫 signal 這個 system call
12/22 07:29, 5F

12/22 10:44, , 6F
恩 謝謝你 那我想請問一下如果是網路突然斷線
12/22 10:44, 6F

12/22 10:45, , 7F
是算收到sighup 訊號嗎 還是哪一種訊號
12/22 10:45, 7F

12/22 11:03, , 8F
剛試了一下,用shell執行的前景行程A,當shell斷線時,A會收
12/22 11:03, 8F

12/22 11:03, , 9F
到 SIGHUP
12/22 11:03, 9F

12/22 11:03, , 10F
如果是背景行程,就不會收到 SIGHUP
12/22 11:03, 10F

12/22 11:04, , 11F
SIGIO 是網路收發的某方,將socket藉由ioctl設為產生SIGIO
12/22 11:04, 11F

12/22 11:04, , 12F
時,當有事件(收到資料,連線被關閉等)時會收到SIGIO,沒做特
12/22 11:04, 12F

12/22 11:05, , 13F
別設定,不會收到.如果你的程式沒有做socket通訊,不要管
12/22 11:05, 13F

12/22 11:05, , 14F
SIGIO 這個部分
12/22 11:05, 14F
文章代碼(AID): #1EySEfkm (Linux)