fd

Android RIL结构分析与移植

橙三吉。 提交于 2019-12-07 19:19:51
Android RIL结构分析与移植 介绍 本文档对Android RIL部分的内容进行了介绍,其重点放在了Android RIL的原生代码部分。 包括四个主题: 1.Android RIL框架介绍 2.Android RIL与 WindowsMobile RIL 3.Android RIL porting 4.Android RIL的java框架 在本文档中将Android代码中的重要模块列出进行分析,并给出了相关的程序执行流程介绍,以加深对模块间交互方式的理解。 对于java代码部分,这里仅进行简单的介绍。如果需要深入了解,可以查看相关参考资料。 本文档中还对Android RIL的Porting部分内容进行了描述和分析。 针对对unix操作系统环境并不熟悉的读者,本文档中所涉及到的相关知识包括: Unix file system Unix socket Unix thread Unix 下I/O多路转接 以上信息可以在任意一份描述Unix系统调用的文档中找到。 1.Android RIL框架介绍 术语: fd unix文件描述符 pipe unix管道 cond 一般是condition variable的缩写 tty 通常使用tty来简称各种类型的终端设备 unsolicited response 被动请求命令来自baseband event loop

一个对异步IO的小小的介绍 (1)

二次信任 提交于 2019-12-07 16:35:49
一个对异步IO的小小的介绍 (2) 一个对异步IO的小小的介绍 (3) 一个对异步IO的小小的介绍 (4) 许多初学者都是从阻塞式IO网络编程开始的。如果一个IO操作是同步的,意味着当你调用相关的函数时,除非IO操作已经完成,否则函数不会立即返回,或者达到超时时间后才会返回。举例来说,当你使用TCP协议中的connect()函数时,你所在的操作系统将一个SYN包放入发往TCP另一端的数据队列中。除非从TCP另一端收到SYN ACK包,否则你的应用程序不会获得响应,或者经过足够的时间后放弃了连接网络才会获得响应。 这里有一个使用阻塞式IO的简单的客户端的例子:它打开一个www.google.com的连接,发送一个简单的HTTP请求,然后输出应答到stdout。 Example: A simple blocking HTTP client /* For sockaddr_in */#include <netinet/in.h>/* For socket functions */ #include <sys/socket.h>/* For gethostbyname */#include <netdb.h> #include <unistd.h> #include <string.h> #include <stdio.h> int main(int c, char **v) {

一个对异步IO的小小的介绍 (2)

旧城冷巷雨未停 提交于 2019-12-07 16:35:39
一个对异步IO的小小的介绍 (1) 一个对异步IO的小小的介绍 (3) 一个对异步IO的小小的介绍 (4) 这是另外一个 ROT13 server的实现,使用select() Example: select()-based ROT13 server /* For sockaddr_in */ #include <netinet/in.h> /* For socket functions */#include <sys/socket.h> /* For fcntl */#include <fcntl.h> /* for select */#include <sys/select.h> #include <assert.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #define MAX_LINE 16384charrot13_char(char c) { /* We don't want to use isalpha here; setting the locale would change * which characters are considered alphabetical. */ if ((c >= 'a' && c

java实现hello/hi的简单的网络聊天程序与ServerSocket调用栈跟踪

允我心安 提交于 2019-12-07 15:58:37
java实现hello/hi的简单的网络聊天程序 网络聊天采用TCP协议通过java实现 import java.io.*; import java.net.Socket; public class Client { public static void main(String[] args) throws Exception{ Socket socket = new Socket("192.168.31.68", 6666); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String s = reader.readLine(); OutputStream outputStream = socket.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream)); writer.write(s); writer.newLine(); writer.flush(); socket.close(); } } import java.io.InputStream; import java.net.InetAddress; import java

几个例子,看懂poll和epoll

筅森魡賤 提交于 2019-12-07 15:39:59
1. poll的例子 #include <stdio.h> #include <sys/eventfd.h> #include <poll.h> int main() { uint64_t value = 2; int event_fd = eventfd(0, EFD_NONBLOCK); struct pollfd pfd; int status = 0; uint64_t check_value = 0; printf("event_fd=%d\n", event_fd); write(event_fd, &value, sizeof(value)); write(event_fd, &value, sizeof(value)); write(event_fd, &value, sizeof(value)); read(event_fd, &check_value, sizeof(check_value)); printf("read, value=%ld\n", check_value); int ret = fork(); if (ret < 0) { printf("fork error\n"); } if (ret == 0) { pfd.fd = event_fd; pfd.events = POLLIN; printf("__FILE: %s, __LINE:

【原创】如何在 Linux 下调整可打开文件/文件描述符数目

无人久伴 提交于 2019-12-07 12:30:40
How do I increase the maximum number of open files under CentOS Linux? How do I open more file descriptors under Linux? The ulimit command provides control over the resources available to the shell and/or to processes started by it, on systems that allow such control. The maximum number of open file descriptors displayed with following command (login as the root user). ulimit 命令提供了针对 shell 和/或 由该 shell 启动的进程 占用资源的控制。 Command To List Number Of Open File Descriptors Use the following command to display maximum number of open file descriptors: cat /proc/sys/fs/file-max -- 显示单个登陆会话允许打开的 fd 数目

一个对异步IO的小小的介绍 (3)

醉酒当歌 提交于 2019-12-07 03:14:39
一个对异步IO的小小的介绍 (1) 一个对异步IO的小小的介绍 (2) 一个对异步IO的小小的介绍 (4) 这里是另一个ROT13 server的异步实现。这次,它使用libevent 2 来替代select。注意fd_sets已经不再使用,取而代之的是: 我们使用一个event_base结构关联或者取消关联事件,它内部实现了select、poll、epoll、kqueue等 。 Example: A low-level ROT13 server with Libevent /* For sockaddr_in */ #include <netinet/in.h> /* For socket functions */ #include <sys/socket.h> /* For fcntl */ #include <fcntl.h> #include <event2/event.h> #include <assert.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #define MAX_LINE 16384void do_read(evutil_socket_t fd, short events, void *arg);void

Android NDK GPIO操作(pcduino 装Android系统)

泪湿孤枕 提交于 2019-12-07 01:17:32
开发工具: Eclipse 开发语言: Java和c++ Pcduino跑Android系统让我兴奋了很长时间,也由此幻想了很多有趣的应用。例如 结合Yeelink做远程加电控制;结合微信开放接口与传感器向好友推送信息等等。 当然这些有趣的应用都离不开PCDUINO硬件的操作。那么在Android系统下怎么来操作硬件呢?我想大概有以下几种方式: 1、利用Arduino 库自己写c++程序然后编译成可执行文件,然后把可执行文件拷到PCDUINO中,添加权限,在模拟中端里运行可执行文件。 优点:Arduino库函数完善,非常容易操作。 缺点:貌似和Android开发的应用不能完美的结合。 2、利用Android 的Jni编程,直接驱动GPIO。 优点:开发工具简单,利用Eclipse进行交叉编译,同时编译Java和c++代码。并且把硬件操作函数生成.so文件直接打包APK中。 下面我们利用ANDROID NDK来开发一个简单实例: " 光电开关控制UI上的灯泡亮灭" 第一步:开发环境的搭建 1、安装Eclipse 2、安装ADT-v20插件(该版本已经直接支持Native编程) 3、安装CDT(编译c++代码) 3、安装android-ndk-r8e(该版本支持Windows,不用在Cygwin下编译了) 按照这种模式搭建的开发环境用起来非常上手,java和c++程序直接交叉编译

实验二

时间秒杀一切 提交于 2019-12-06 16:20:49
#include<sys/types.h> #include<sys/wait.h> #include<unistd.h> #include<stdlib.h> #include<stdio.h> #include<string.h> main() { int x,fd[2]; char buf[30],s[30]; pipe(fd); while ((x=fork())==-1); if (x==0) { close(fd[0]); printf("Child Process!\n"); strcpy(buf,"This is an example\n"); write(fd[1],buf,30); exit(0); } else{ close(fd[1]); printf("Parent Process!\n"); read(fd[0],s,30); printf("%s\n",s); } } /******************实验二第一段代码***********************/ 来源: https://www.cnblogs.com/Andromeda-Galaxy/p/11993664.html

网络爬虫之scrapy框架详解

ぐ巨炮叔叔 提交于 2019-12-06 16:11:43
twisted介绍 Twisted是用Python实现的基于事件驱动的网络引擎框架,scrapy正是依赖于twisted, 它是基于事件循环的异步非阻塞网络框架,可以实现爬虫的并发。 twisted是什么以及和requests的区别: request是一个python实现的可以伪造浏览器发送Http请求的模块,它封装了socket发送请求 twisted是基于时间循环的异步非阻塞的网络框架,它也封装了socket发送请求,但是他可以单线程的完成并发请求。 twisted的特点是: 非阻塞:不等待 异步:回调 事件循环:一直循环去检查状态 scrapy的pipeline文件和items文件 这两个文件有什么作用 先看看我们上篇的示例: + View Code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 # -*- coding: utf-8 -*- import scrapy class ChoutiSpider(scrapy.Spider): ''' 爬去抽屉网的帖子信息 ''' name = 'chouti' allowed_domains = [