【发布时间】:2015-09-18 11:43:34
【问题描述】:
我正在为 Android Gingerbread 编写一个中间件应用程序。
在我的代码中,有一行,
printf("--Executing command\n");
if (system ("rm -f /tmp/dump.txt")){}
printf("file deletion successful\n");
我得到打印直到行,--Executing command,然后它挂起。
当我执行ps 时,我可以看到sh -c rm -f /tmp/dump.txt。过程还在。为什么我的代码没有通过system 调用或为什么系统调用挂起,如ps 所示?
如果有权限问题,我会得到一个错误。
编辑
调用if (system ("rm -f /tmp/dump.txt")){} 实际上是在删除文件,正如我通过ls /tmp/ 验证的那样,文件已被删除,但随后它没有出现。挂了。
编辑
在搜索更多内容时,我找到了this。会不会有类似的问题?我正在使用 Android Gingerbread,它太旧了。
【问题讨论】:
-
所以您的问题是“为什么我没有向您展示的代码不起作用,而我拥有向您展示的代码却可以?”。这不是特别容易回答。您发布的代码与显示意外行为的代码之间有什么不同?
-
@EOF :是的,这让事情变得更加混乱。让我编辑问题。
-
您是否尝试
unlink()文件?或者有什么特定的理由为此调用 shell? -
@EOF,
rm也不会删除文件,就您正在使用的“删除”而言。事实上,它所做的是unlink()它。直接使用unlink()确实是更好的选择,但这只是减少了一些不必要的中介;它不会从根本上改变执行的操作。 -
@InsaneCoder:
system("killall myapp")无论如何可能是一个可怕的想法。如果您的程序需要它,它是被设计破坏的。
标签: android c embedded-linux