NaCl 和共享内存
NaCl and shared memory
我的应用程序在 linux 共享内存 (/dev/shm/datahere) 中写入一些日期。
我需要使用 google 本机客户端在浏览器中显示此数据。
是真的?我该怎么做?
我不得不在网上挖漂亮,但我找到了解决办法:
刚出浏览器因为sandbox无法访问,但是有一个ChromeApps,借助NaCl可以访问文件系统。
要构建 Chrome 包含在 NaCl 中的应用程序并访问文件系统,请执行以下操作:
下载nacl_sdk。更新它,以获取示例 (pepperX)
在文件nacl_sdk/pepper_46/tools/common.mk
中找到一行SANDBOX_ARGS:= --no-sandbox并改为:
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)" > $(CURDIR)/run_package_config
Exec=env NACL_DANGEROUS_ENABLE_FILE_ACCESS=1 "$(CHROME_PATH)" --load-and-launch-app=$(CURDIR) $(CHROME_ARGS)
- 在项目的Makefile中需要添加:
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.
- 代码示例。这非常重要 - 不要阅读 /dev/shm 阅读 /var/run/shm:
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。也许这不是一个好的解决方案,但它对我有用
我的应用程序在 linux 共享内存 (/dev/shm/datahere) 中写入一些日期。 我需要使用 google 本机客户端在浏览器中显示此数据。 是真的?我该怎么做?
我不得不在网上挖漂亮,但我找到了解决办法: 刚出浏览器因为sandbox无法访问,但是有一个ChromeApps,借助NaCl可以访问文件系统。
要构建 Chrome 包含在 NaCl 中的应用程序并访问文件系统,请执行以下操作:
下载nacl_sdk。更新它,以获取示例 (pepperX)
在文件
nacl_sdk/pepper_46/tools/common.mk
中找到一行SANDBOX_ARGS:= --no-sandbox并改为:
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)" > $(CURDIR)/run_package_config Exec=env NACL_DANGEROUS_ENABLE_FILE_ACCESS=1 "$(CHROME_PATH)" --load-and-launch-app=$(CURDIR) $(CHROME_ARGS)
- 在项目的Makefile中需要添加:
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.
- 代码示例。这非常重要 - 不要阅读 /dev/shm 阅读 /var/run/shm:
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。也许这不是一个好的解决方案,但它对我有用