Re: [問題] 關於socket 與 linux nc的問題

看板Perl作者 (saiamoi)時間12年前 (2012/04/29 23:30), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串3/3 (看更多)
先謝謝各位的回覆以及推文的回覆 我想請問一下 用DarkKiller大所提到的方法 (類似while迴圈?) 會很耗CPU等系統資源嗎? 並可以使得linux nc結束後而perl不會關閉嗎? (不好意思這部分還沒有試過) 那假如我另外寫一支perl的程式 用來當作client端 取代之前用linux nc 的方式 這樣當這支client端程式送出我要的指令後關閉 也會導致原本的server端的perl關閉嗎? 這部分我還沒有試過 只是一個想法 想問問各位這樣的可行性如何呢? 謝謝各位 ※ 引述《DarkKiller (System hacked)》之銘言: : ※ 引述《saiamoi (saiamoi)》之銘言: : for (;;) { : : my $get = $sock->accept() : 少了一個分號? : : while($get) : : { : : if (/cmd/) : : { : : 要做的事; : : } : : } : } : : ------------------------------------------------------------ : : 執行該perl程式後 1234的port會打開並進行等待 : : 接著我從另一邊使用linux 的nc 指令 : : 執行 nc pc77 12345 : : 然後輸入"cmd" 使剛剛等待中的perl執行 "要做的事" : : 到目前為止都很順利 可以順利執行 "要做的事" : : 但接著當我用^C 關掉linux 的nc後 : : perl 那邊也就一起關掉了... : : 我希望的是 perl一旦開啟後 就一直在有process 活在那邊 : : 一直等待我從外部給指令 然後做事 做完後又繼續等 直到我把perl關掉為止 : : 請問這樣有辦法做到嗎? : : 或是哪邊需要做修改呢? : : 先謝謝各位了! 感謝! : 最簡單的方式就是加這兩行... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.12.69.77 ※ 編輯: saiamoi 來自: 124.12.69.77 (04/29 23:31)

05/06 00:40, , 1F
以這個想法作基礎 用fork child去開port
05/06 00:40, 1F

05/06 00:41, , 2F
parent 等child死就自動再fork another child 開 port
05/06 00:41, 2F

05/06 00:41, , 3F
壞處是 socket會有短暫斷線
05/06 00:41, 3F

05/06 19:03, , 4F
嗯,謝謝,這幾天以這樣的方法正在測,似乎有r大說的情況
05/06 19:03, 4F

05/06 19:05, , 5F
但是目前可以接受這樣的結果。謝謝各位
05/06 19:05, 5F
文章代碼(AID): #1FdLwi9P (Perl)
文章代碼(AID): #1FdLwi9P (Perl)