作者DarkKiller (System hacked)
看板Perl
標題Re: [問題] 關於socket 與 linux nc的問題
時間Sat Apr 28 20:01:27 2012
※ 引述《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: 210.242.135.97
推 saiamoi:分號的部分是我的疏忽啦 程式裡面是有分號的 04/28 23:50
→ saiamoi:關於你說的方式 只要加個for 就不會因為nc結束而 04/28 23:51
→ saiamoi:使得perl也跟著關掉嗎? 我會用來試試看 謝謝 04/28 23:52
→ saiamoi:不好意思可以順便請教一下原因嗎? 為什麼加個for就不會 04/28 23:54
→ saiamoi:因為nc結束而跟著結束呢? 謝謝你 04/28 23:54
→ erspicu:應該就是無線迴圈的意思 也可以用 while(1){ .... }一樣 04/29 02:39
→ erspicu:只是這樣CPU資源會不會被占據得太兇阿? 應該要開thread 04/29 02:40
推 kdjf:不會啊,程式會block在等網路資料 04/30 15:42