Perl 板


LINE

試試把 system(...) 改成這樣看看 就是強迫開啟shell來執行外部程式 system('cmd /c start "adb" adb shell ls') ; 或者用替代方案 就是把檔案鎖起來 use 5.016 ; use Fcntl qw/:DEFAULT :flock/ ; use autodie ; open my $out_file, '>' , "out.log" ; flock($out_file, LOCK_EX); # *1 # 呼叫外部程式 # (... 做些和輸出到$out_file有關的事...) undef $out_file ; *1 在windows NT 這一行會讓lock變mandatory, 不是 un*x 的 advisory 所以不怕外部程式不先檢查flock 只是這樣的作法要倚賴外部程式能夠恰當地處理遇到file lock的情形 另外個人覺得比較有可能是adb一側比較怪異 ※ 引述《doom8199 (口卡口卡 修)》之銘言: : 標題: [問題] adb process 莫名咬住 created file : 時間: Fri Feb 20 01:46:05 2015 : 不確定這個問題該 po 到 Android 還是 Perl 版 : 最近用 Perl 寫有關 adb debugging 遇到一個詭異的問題 : 就是執行 perl 途中, adb process 會咬住 file created from perl : 後來把問題 narrow down 成以下 script: : ================================= : use strict; : my $test = "out.log"; : system("adb kill-server"); # (1) : open FILE, "> $test"; # (2) : system("adb shell ls"); # (3) : close FILE; : unlink $test or die "Q_Q\n"; : ================================= : 只要執行該 script, console 一定會顯示 Q_Q : (當然前提是 找的到 adb 程式 和 usb driver) : 但若只要在 open file 前, 讓 adb daemon 可以起來 : 例如在 #(1) 和 #(2) 之間呼叫 adb remount: : ================================= : system("adb kill-server"); # (1) : system("adb remount"); # (4) : open FILE, "> $test"; # (2) : ================================= : 這樣的 script 就不會印出 Q_Q 了 : 不知道是不是因為 adb 起來的時候動到 file descriptor : 讓檔案以為是 adb.exe 叫起來 : 但相同的邏輯,用 Python 跑卻沒事情 : 麻煩版上的大神們能幫忙指點迷津 : 感謝~ : -- :



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.221.50.98
: ※ 文章網址: https://webptt.com/m.aspx?n=bbs/Perl/M.1424367968.A.AA8.html : 推 flu: 有點小叉題但想請教一下 在幾種呼叫其他程式的方法中 02/21 03:09 : → flu: 也就是 system(), exec(), qr//, IPC:: 之類等等, 02/21 03:10 : → flu: 原po是比較過python和perl的ipc, fork, 有無shell中介..等等 02/21 03:10 : → flu: 機制後 採用了python中和perl的system()的對等指令後 02/21 03:13 : → flu: 才說是「相同的邏輯,用 Python 跑卻沒事情」這樣的敘述是嗎 02/21 03:13 : → flu: 回到原題,試試 system LIST 或 exec跑看看囉 02/21 03:13 : → flu: 另外return value,$OS_ERROR(with use ENGLISH)的也都看看 02/21 03:14 : → flu: 會比較好吧 02/21 03:14 : → flu: *第二列推文的 qr// 要改成 qx// 02/21 03:20 : --- : Python 部分我目前只有試過 subprocess.call : 至於 Perl or Python 內部如何運作,這我就不太了解 QQ : 然後我試了一下您的建議 : system return value = 0, no error in $! : 用 fork + exec 取代 system call, 也會發生 adb 咬檔事件 : 用 qx// 取代 system call, sub process 會卡住 : 關於這點,我發現跟 file open/close 一點關係也沒有 : 而是只要執行以下命令: : ----------------------------- : system("adb kill-server"); : `adb shell ls`; ____(*) : ----------------------------- : 那當 perl 跑到 (*) 那行時會莫名卡著... : ps: : 不想要 (*) 卡著,只要在前面用 system call : 隨便呼叫 adb cmd 即可 : 快分不清是 Perl/adb 有 bug, 還是我哪邊沒搞清楚 : ※ 編輯: doom8199 (61.221.50.98), 02/21/2015 23:18:06 : 推 flu: 黃色的那一列是想表達 system('adb shell ls') 執行後會停在 02/22 00:47 : → flu: 那一列,不會進行到下一列是嗎? 02/22 00:48 : 推 flu: 對了 我想你17~27列的程式會那樣是因為檔案$test不在,所以Q_Q 02/22 00:55 : 推 flu: 如果你對 adb shell的回傳值有疑惑的話 http://x.co/7o1Rt 02/22 00:58 : → flu: 但是那文章描述的問題我認知上似乎與你的只是類似 但不同 02/22 01:00 : → flu: 另外我猜你的OS是win系列 這樣就與un*x的fork有大大的不同 02/22 01:03 : → flu: 只是順道一提 和要解決你的case應該沒有很大的關聯吧... 02/22 01:05 : → doom8199: 不是檔案不存在, 是 "$test file 真的被 adb.exe 使用" 02/22 18:44 : → doom8199: 才造成砍檔失敗。想要砍檔成功,只能先 kill-server 02/22 18:46 : → doom8199: 另外我目前遇到的問題的確是在 win series 02/22 18:48 : → doom8199: 晚一點會在 linux 上用 emulator 試看看有沒有同樣問題 02/22 18:50 ※ 編輯: flu (36.234.218.107), 02/23/2015 02:33:17







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP