求问 Android 下运行 Linux 命令的正确方式

2016-07-24 23:32:31 +08:00
 icedx
有一个 Linux 程序需要一直运行
试过 exec() 程序会假死
1766 次点击
所在节点    问与答
7 条回复
extreme
2016-07-25 00:56:30 +08:00
不知道你是在哪里运行命令?
exec(),排除 C ,带括号再排除 Shell 。
Android ,大概是 Java 吧,那应该考虑 exec()后, Java 会调用 wait()来等待被 exec()出的进程的结束,从而阻塞了程序的运行。
如果那个 Linux 二进制程序自己写的,调用 fork()和, setsid(),把被 exec()出来的那个进程 exit()掉。
如果不能改那个二进制程序,那就只能从 Java 下手,不了解 Java ,帮不了你。
fashioncj
2016-07-25 01:30:00 +08:00
exec 注意权限和线程。。不要运行在 UI 线程上。。
icedx
2016-07-25 02:08:02 +08:00
@extreme
感谢 感觉十分明了 明天研究下
icedx
2016-07-25 02:08:49 +08:00
@fashioncj 权限没问题 问题应该就是运行在主线程上了...
xuhaoyangx
2016-07-25 09:46:59 +08:00
xuhaoyangx
2016-07-25 09:53:57 +08:00
可以在命令后加 & 后台跑
icedx
2016-07-25 12:30:16 +08:00
@xuhaoyangx
感谢~
放在线程里似乎没问题了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/294634

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX