NaCl和共享记忆

时间:2015-11-26 08:57:14

标签: c++ linux shared-memory google-nativeclient

我有应用程序在linux共享内存(/ dev / shm / datahere)中写一些日期。 我需要使用谷歌原生客户端在浏览器中显示此数据。 是真的?我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

我不得不在互联网上挖掘,但我找到了一个解决方案: 由于沙盒的存在,浏览器无法访问,但有一个Chrome应用程序,在帮助NaCl可以访问文件系统。

要构建NaCl附带的Chrome应用并访问文件系统,请执行以下操作:

  1. 下载nacl_sdk。更新它,获取示例(pepperX)

  2. 在文件nacl_sdk/pepper_46/tools/common.mk中找到一行 SANDBOX_ARGS:= --no-sandbox 并更改为:

  3.   

    SANDBOX_ARGS:= - no-sandbox --allow-no-sandbox-job --nacl-dangerous-no-sandbox-nonsfinacl

    CHROME_ENV?= ,致:

      

    <强> CHROME_ENV = NACL_DANGEROUS_ENABLE_FILE_ACCESS = 1

    2.1如果使用run_package,则需要在common.mk文件中写入:

      

    run_package:check_for_chrome all       @echo“$(TOOLCHAIN)$(CONFIG)”&gt; $(CURDIR)/ run_package_config       执行= env NACL_DANGEROUS_ENABLE_FILE_ACCESS = 1 “$(CHROME_PATH)” - load-and-launch-app = $(CURDIR)$(CHROME_ARGS)

    1. 在项目的Makefile中需要添加:
    2. LIBS = ppapi_cpp ppapi pthread nacl_io
      DEPS = nacl_io
      CFLAGS = -Wall
      SOURCES = <filename> .cc
      
      # Build rules generated by macros from common.mk:
      $ (foreach dep, $ (DEPS), $ (eval $ (call DEPEND_RULE, $ (dep))))
      $ (foreach src, $ (SOURCES), $ (eval $ (call COMPILE_RULE, $ (src), $ (CFLAGS))))
      
      # The PNaCl workflow uses both an unstripped and finalized / stripped binary.
      
      1. 代码示例。这非常重要 - 请勿阅读/ dev / shm read / var / run / shm:
      2. int file;
        file = open("/var/run/shm/helloworld.txt", O_RDONLY);
        char buffer[1024];
        memset(&buffer, 0, 1024);
        read(file, buffer, 13);
        pp::Var var_reply(buffer);
        PostMessage(var_reply);
        

        P.S。也许这不是一个好的解决方案,但它对我有用