小编ram*_*oid的帖子

fclose在android和linux上的工作方式不同

以下计划:

#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>

int main() {
  fclose( stderr );
  printf( "%d\n", fileno( stderr ) );
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

显示-1在Ubuntu 11.04和2对ICS 4.0.3模拟器.找不到有关此问题的任何信息 - 我可以在两个平台上使此代码的工作类似吗?freopenstderr有同样的问题.

更新:

以前的小程序演示了我遇到的实际问题的原因:如果我尝试freopen stderr在不存在的目录中存档,在linux stderr上关闭但在android上它保持打开状态!甚至更多 - 如果我在这个打开的stderr文件中写smth 然后fopen在其他文件stderr上写,我打印的文本将写入此打开的文件.

那么,这个程序:

#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>

# define LOGD( ... ) printf( __VA_ARGS__ ); printf( "\n" )

# ifdef ANDROID
#   define HOMEDIR "/data/data/com.myapp/" …
Run Code Online (Sandbox Code Playgroud)

linux android fclose android-ndk freopen

5
推荐指数
2
解决办法
1043
查看次数

标签 统计

android ×1

android-ndk ×1

fclose ×1

freopen ×1

linux ×1