【问题标题】:freopen returning errno 14 EFAULT : while executing. (arm , linux, android)freopen 返回 errno 14 EFAULT:执行时。 (手臂,Linux,安卓)
【发布时间】:2015-04-14 14:18:17
【问题描述】:

freopen 返回 errno 14 :相当于 EFAULT - BAD ADDRESS 在 Ubuntu 上交叉编译。 在基于 arm 的 android 设备上执行 内核 3.0.23 性能

 ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), not stripped

代码:

if (!freopen(NULL, "rb", stdin)) {
        return errno;
  }

【问题讨论】:

  • 这似乎缺少一个实际问题:)

标签: android c linux arm freopen


【解决方案1】:

freopen()的第一个参数应该是路径名。如果你把它传递为NULL,那显然是在自找麻烦。

你想达到什么目的?

【讨论】:

  • 根据POSIX,空文件名意味着改变现有流的模式which may or may not be supported
  • 我想以二进制模式重新打开标准输入。但是当我使用 freopen 并使用 arm-linux-androideabi-gcc 为我的 arm 机器编译时。程序停止执行并返回 errno 14。但在我的 ubuntu 机器上,它可以按我的意愿完美运行。
  • 其实它也在C99标准中,所以它绝对是调用freopen的有效方式,即使你不能指望它会成功。上面的代码在我的桌面机器上与 glibc 一起工作(或者至少没有给出错误并返回相同的标准输入指针),尽管我的联机帮助页中也没有。确实glibc source 证实了这一点,但是bionic is not glibc...
猜你喜欢
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
相关资源
最近更新 更多