[英]Getting bufferedReader.readLine() value is null in android
工作条件:
Process process = Runtime.getRuntime().exec("ls -l /etc/");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Log.d(TAG,"bufferedReader.readLine()===>"+bufferedReader.readLine());
截断日志:bufferedReader.readLine()===>total 7580
不工作:
Process process = Runtime.getRuntime().exec("./etc/lighttpd -D -f /etc/test.conf");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Log.d(TAG,"bufferedReader.readLine()===>"+bufferedReader.readLine());
截断日志:bufferedReader.readLine()===>null
你能帮我吗,为什么我在执行“./etc/lighttpd -D -f /etc/test.conf”命令时收到 bufferedReader.readLine() 为“null”
在设备 shell 中执行以下命令:
#./etc/lighttpd -D -f /etc/test.conf
2022-08-30 12:38:18: server.c.1508) server started (lighttpd/1.4.58)
/etc/lighttpd
通常是一个包含配置信息的目录。 /etc/lighttpd
通常不是可执行文件。
路径名./etc/lighttpd
是可疑的,但您向我们展示的证据证明:
...至少对于某些当前目录。
为什么我说它被证明了? 因为:
exec
没有抛出IOException
,并且 诚然,当前目录可能不同……这也是我说./etc/lighttpd
可疑的原因之一!
因此,如果问题不在于./etc/lighttpd
不是可执行文件,那么bufferedReader.readLine()
返回null
的解释是什么。
好吧,最简单的理论是lighttpd
正在写入标准错误而不是标准 output,并且它已经关闭了其标准 output。 这将解释您所看到的行为。
无论如何......我的建议是:
./etc/lighttpd
更改为您正在使用的可执行文件的绝对路径名...以消除任何疑问。process.getErrorStream()
打开和读取。lighttpd
日志文件中查找任何错误。 最后,您已经用[android]
标记了您的问题,但 AFAIK 没有用于 Lighttpd 的(官方)Android 端口。 我猜这个标签是一个错误,因为没有其他提到 Android。 但如果这不是一个错误,你应该告诉我们你的 go Android 端口来自哪里。 这可能有助于人们诊断问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.