当前位置: 首页 > news >正文

婚纱网站建设目的企业开源网站系统

婚纱网站建设目的,企业开源网站系统,工信部网站报备,北京景观设计公司简述 在Linux中#xff0c;socketpair函数可以用于创建一对相互连接的、通信域为AF_UNIX的套接字#xff0c;其中一个套接字可用于读取#xff0c;另一个套接字可用于写入。可以使用这对套接字在同一进程内进行进程间通信#xff08;IPC#xff09;。 以下是使用socketp…简述 在Linux中socketpair函数可以用于创建一对相互连接的、通信域为AF_UNIX的套接字其中一个套接字可用于读取另一个套接字可用于写入。可以使用这对套接字在同一进程内进行进程间通信IPC。 以下是使用socketpair函数创建套接字对的基本步骤 包含头文件 sys/types.h、sys/socket.h 和 unistd.h。 声明一个长度为2的数组作为套接字描述符的参数。 调用 socketpair 函数并将套接字描述符数组作为参数传递给它。函数原型为 int socketpair(int domain, int type, int protocol, int sv[2]);domain参数指定通信域通常设置为AF_UNIX。type参数指定套接字类型可以设置为SOCK_STREAM或SOCK_DGRAM。protocol参数通常设置为0表示使用默认协议。sv参数是一个长度为2的整数数组用于保存创建的套接字描述符。 使用sv数组中的套接字描述符进行进程间通信。 Linux举例 下面是一个基于 socketpair 的简单例子用于在父子进程之间传递数据 #include unistd.h #include sys/socket.h #include stdio.h #include string.hint main() {int sockfd[2];char buf[1024];pid_t pid;if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd) 0) {perror(socketpair);return 1;}if ((pid fork()) -1) {perror(fork);return 1;}if (pid 0) { // 子进程close(sockfd[0]);char msg[] Hello, parent!;if (write(sockfd[1], msg, strlen(msg)) 0) {perror(write);return 1;}close(sockfd[1]);} else { // 父进程close(sockfd[1]);int n read(sockfd[0], buf, sizeof(buf));if (n 0) {perror(read);return 1;}printf(Parent: received message from child: %s\n, buf);close(sockfd[0]);}return 0; } 该程序首先调用 socketpair 函数创建一对 UNIX 域套接字存储在 sockfd 数组中。然后程序调用 fork 函数创建一个子进程。在子进程中它关闭 sockfd[0]然后将一条消息写入 sockfd[1]然后关闭 sockfd[1]。在父进程中它关闭 sockfd[1]然后从 sockfd[0] 中读取一条消息并将其打印到标准输出中最后关闭 sockfd[0]。 当该程序运行时它会创建一个子进程子进程向父进程发送一条消息父进程接收到该消息并将其打印出来 Parent: received message from child: Hello, parent!Android framework 举例 android-12.0.0_r28/frameworks/native/libs/sensor/BitTube.cpp BitTube void BitTube::init(size_t rcvbuf, size_t sndbuf) {int sockets[2];if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, sockets) 0) {size_t size DEFAULT_SOCKET_BUFFER_SIZE;setsockopt(sockets[0], SOL_SOCKET, SO_RCVBUF, rcvbuf, sizeof(rcvbuf));setsockopt(sockets[1], SOL_SOCKET, SO_SNDBUF, sndbuf, sizeof(sndbuf));// sine we dont use the return channel, we keep it small...setsockopt(sockets[0], SOL_SOCKET, SO_SNDBUF, size, sizeof(size));setsockopt(sockets[1], SOL_SOCKET, SO_RCVBUF, size, sizeof(size));fcntl(sockets[0], F_SETFL, O_NONBLOCK);fcntl(sockets[1], F_SETFL, O_NONBLOCK);mReceiveFd sockets[0];mSendFd sockets[1];} else {mReceiveFd -errno;ALOGE(BitTube: pipe creation failed (%s), strerror(-mReceiveFd));} }BitTube.cpp 是 Android 中传感器服务和传感器驱动程序之间通信使用的 BitTube 类的实现文件。 InputTransport android-12.0.0_r28/frameworks/native/libs/input/InputTransport.cpp status_t InputChannel::openInputChannelPair(const std::string name,std::unique_ptrInputChannel outServerChannel,std::unique_ptrInputChannel outClientChannel) {int sockets[2];if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, sockets)) {status_t result -errno;ALOGE(channel %s ~ Could not create socket pair. errno%s(%d), name.c_str(),strerror(errno), errno);outServerChannel.reset();outClientChannel.reset();return result;}int bufferSize SOCKET_BUFFER_SIZE;setsockopt(sockets[0], SOL_SOCKET, SO_SNDBUF, bufferSize, sizeof(bufferSize));setsockopt(sockets[0], SOL_SOCKET, SO_RCVBUF, bufferSize, sizeof(bufferSize));setsockopt(sockets[1], SOL_SOCKET, SO_SNDBUF, bufferSize, sizeof(bufferSize));setsockopt(sockets[1], SOL_SOCKET, SO_RCVBUF, bufferSize, sizeof(bufferSize));spIBinder token new BBinder();std::string serverChannelName name (server);android::base::unique_fd serverFd(sockets[0]);outServerChannel InputChannel::create(serverChannelName, std::move(serverFd), token);std::string clientChannelName name (client);android::base::unique_fd clientFd(sockets[1]);outClientChannel InputChannel::create(clientChannelName, std::move(clientFd), token);return OK; }在 Android Input 系统中InputTransport 使用 socketpair 函数创建一对全双工的本地套接字socket用于在应用程序和驱动程序之间传递输入事件。其中一个套接字用于向驱动程序发送输入事件另一个套接字用于接收来自驱动程序的输入事件。通过这种方式InputTransport 可以将输入事件发送到驱动程序并接收驱动程序生成的输入事件。
http://www.hkea.cn/news/14277144/

相关文章:

  • 国外做电商网站有哪些wordPress登不上数据库
  • 做网站广告收入互联网软件公司排名
  • 双语网站代码如何做一个网站
  • 那个网站做排列五头比较准ps企业网站模板免费下载
  • 潍坊网站建设报价费用2022最新小学生新闻
  • 网站推广的心得网站服务器能更换吗
  • 软件外包网站服务行业网站建设
  • 网站建设步骤完整版四川省四川省住房和城乡建设厅网站
  • 重庆最大的网站制作公司公路机电工程建设网站
  • 单位网站建设制作个人网站制作成品图片
  • 网页网站开发淘宝网站SEO怎么做
  • 广州开发网站建设北京电力交易中心
  • 最专业的做网站公司哪家好网业协同具体指什么
  • 外贸移动端网站模板网站建设sem账户搭建
  • 外贸谷歌网站推广切削工具东莞网站建设
  • 灰色网站网站在线修图编辑器
  • 做网站一天能赚多少钱遵义网站开发
  • 河南平顶山网站建设公司免费发做网站
  • 镇江网站建设包括哪些专业网站建设平台代理商
  • 贵州专业网站建设费用南通市建设局网站6
  • 高端企业网站建设蓦然郑州网站建设wordpress进不到后台
  • 做外账要登什么网站wordpress jekyll 选择
  • 高端网站建设公司有哪些项目局域网建WordPress
  • 建设网站要准备什么新乡网络公司推荐
  • 张家港外贸网站制作江苏省住房和城乡建设局
  • 建筑施工单位网站怎么做淘宝推广网站
  • 网站开发与运用小白建设论坛网站
  • 做自媒体有哪些素材网站wordpress++xml
  • 北京微信网站建设费用网站推广主要怎么做
  • 查询网站域名备案微网站平台建设方案