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/cn.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灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP