我正在尝试通过boost的Unix Domain套接字包装器在Android上打开一个本地套接字。
我似乎无法找到接受者工作的路径。
using boost::asio::local::stream_protocol;
void test()
{
boost::asio::io_service io;
stream_protocol::endpoint ep("/dev/shm/BlahBLah");
stream_protocol::acceptor(io, ep);
}
我从sock bind()中得到一个异常错误代码:2(ENOENT)
那么,为什么boost stream_protocol不能通过该目录连接? (手动我可以打开一个并将套接字绑定到该路径)
我需要以某种方式设置权限吗?或者是否有不同的路径可行(不通过SD卡,我需要虚拟路径)
答案 0 :(得分:0)
首先使用共享内存设备似乎很有趣。
UNIX域套接字与它无关。我相信Android内核不支持共享内存。
我认为你应该可以使用任何可访问和写入程序的目录。
“我需要虚拟路径”是什么意思?我想你的意思是你想让套接字不可见¹?应该使用Posix权限或acls。
最后,看看socketpair
- IIRC - 为IPC创建未命名的套接字
¹/ proc,lsof和类似的机会仍然可以看到它。不要在插槽名称中公开机密并使用权限保护它。