c - 如何从 NaCl 开发环境应用程序打开文件?

标签 c google-chrome file-io google-nativeclient

我正在尝试让一个简单的命令行应用程序在 NaCl Development Environment 中运行.但是我不明白为什么它不想打开文件:

#include <stdio.h>
#include <ppapi_simple/ps_main.h>
int my_main (int argc, char ** argv) {
  FILE * f = fopen ("out.txt","w");
  if (f) {
    fputs ("output to the file", f);
    fclose(f);
  } else {
    puts("could not open file");
  }
}
PPAPI_SIMPLE_REGISTER_MAIN(my_main)

运行:

bash.nmf-4.3$ gcc -I"$NACL_SDK_ROOT/include" test.c -lppapi_simple -lnacl_io -lppapi
bash.nmf-4.3$ ./a.out 
could not open file
bash.nmf-4.3$

应用程序显然可以在开发环境中的任意位置打开文件 - 我正在使用 nano 来编辑测试代码!但是 nano 的 naclports 版本 doesn't look like it's been changed以直接连接到文件操作的方式..?

Lua 是另一个应用 appears to have only been modified very slightly .它介于两者之间,因为它可以运行测试文件,但前提是它们被放置在 /mnt/html5 中,并且不会从主文件夹加载它们。如果我将它更改为在 /mnt/html5 中查看,我的测试程序在行为上没有任何差异。

注意。我的目标是构建一个我可以在开发环境中与 Lua 和 nano 等一起使用的终端应用程序,而不是基于浏览器的应用程序 - 我认为这会对文件处理规则产生一些影响。

最佳答案

在 NaCl 开发环境中运行的程序目前需要与 -lcli_main 链接(这又取决于 -lnacl_spawn)作为一个入口点,它了解如何与naclprocess.js 中的 javascript“内核”。他们需要这个来了解他们从哪个当前工作目录运行,以及了解已安装的文件系统。

仅链接到 ppapi_simple 的程序可以运行,但不会设置开发环境可能期望的所有挂载点。

开发环境中有一个链接描述文件,可以简化命令行程序-lmingn 的链接。例如,问题中的测试程序可以编译为:

gcc test.c -o test -lmingn

注意:此链接器脚本最近解决了一个问题,已于 2015 年 5 月 5 日向商店发布了包含此修复程序的新版本。

在不久的将来,我们计划通过允许 main 作为入口点来进一步简化事情。

感谢您指出 lua 端口缺少新的入口点! 我已经提交了一个问题并将尽快解决它: https://code.google.com/p/naclports/issues/detail?id=215

关于c - 如何从 NaCl 开发环境应用程序打开文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30042573/

相关文章:

c - 信号 : Segmentation fault (11) in MPI C++

javascript - 为什么我的 Javascript Chrome 扩展代码不起作用? (循环检查按钮)

javascript - 如何立即更改Chrome扩展程序图标?

Java Apache POI 打开文件?

c++ - 此代码似乎在分配范围之外附加字符

c - c中的开关和大小写如何匹配?

c - 全局内存状态Ex() (Win32)

ajax - Chrome 没有在 AJAX POST 上设置 cookie

c - c 中的两个流相互干扰

c - 阅读一个txt。以 (int float float string) 的格式并将值放入并行数组中