<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[runfan1014的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/runfan1014</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; runfan1014]]></copyright><item><title><![CDATA[Android Studio导入其他项目]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/78217633</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/78217633</guid><author>runfan1014</author><pubDate>Thu, 12 Oct 2017 17:35:37 +0800</pubDate><description><![CDATA[1.先打开每个 module下的 gradle 文件，即 app 目录下的 build.gradle 以及各个 library 下的 build.gradle ,首先查看 compileSdkVersion 和 buildToolsVersion，因为有些时候你本地的版本和下载的版本不一致，那么就会导致失败。




2.检查 gradle-wrapper ，Google 有些时候要求不]]></description><category></category></item><item><title><![CDATA[linux dup2函数]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/78064456</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/78064456</guid><author>runfan1014</author><pubDate>Fri, 22 Sep 2017 16:37:56 +0800</pubDate><description><![CDATA[一.概述
      
dup和dup2也是两个非常有用的调用，它们的作用都是用来复制一个文件的描述符。它们经常用来重定向进程的stdin、stdout和stderr。



二.头文件
unistd.h


四.函数接口
int dup2(int fd, int fd2);
dup2函数成功返回时，目标描述符fd2将变成源描述符fd的复制品，换句话说，两个文件描述符现在都]]></description><category></category></item><item><title><![CDATA[Linux POSIX 消息队列]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/75285809</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/75285809</guid><author>runfan1014</author><pubDate>Tue, 18 Jul 2017 11:17:18 +0800</pubDate><description><![CDATA[一.概述
      内核经常要推后执行某些代码，如底半部机制就是为了将工作推后执行。timer_list为我们提供一种方式，使工作能够在指定时间点上执行。
      定时器使用简单，只须执行一些初始化工作，设置一个超时时间，指定超时发生后执行的函数，然后激活定时器就可以了。
      定时器并不是周期运行的，它在超时后就自行销毁，这就是这种定时器被称为动态定时器的原因。动态定时器不断地]]></description><category></category></item><item><title><![CDATA[linux文件系统启动流程、启动脚本]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/72885069</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/72885069</guid><author>runfan1014</author><pubDate>Tue, 06 Jun 2017 17:07:57 +0800</pubDate><description><![CDATA[下面是一张Linux启动流程图：

在了解启动流程之前，我们应该先知道系统的几个重要脚本和配置文件，他们对应的路径为：
1. /sbin/init

2. /etc/inittab
3. /etc/rc.d/rc.sysinit
4. /etc/rc.d/rcN.d //这是几个文件夹N代表数字1,2,3,4..
5. /etc/fstab
1.关于/sbin/init与/etc]]></description><category></category></item><item><title><![CDATA[TCP、UDP 发送、接收0字节问题]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/71750844</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/71750844</guid><author>runfan1014</author><pubDate>Fri, 12 May 2017 18:03:49 +0800</pubDate><description><![CDATA[再论Tcp Udp 发送、接收 0字节问题






发送时



Tcp



建立连接时，3次握手的每个报文都是data区为0字节，所以说发送0字节没有问题。

建立连接后，再发送0字节大小也没有问题

（api:send，发送后返回值为发包的大小）





 



Udp



可以发送0字节大小报文。

(api:]]></description><category></category></item><item><title><![CDATA[Linux内核定时器-- timer_list]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/69955297</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/69955297</guid><author>runfan1014</author><pubDate>Fri, 28 Apr 2017 14:05:00 +0800</pubDate><description><![CDATA[一.概述
            信号量是Linux进程间通信的常用方法之一，这里使用POSIX标准的信号量，而不是System V的。


二.头文件
linux/timer.h



二.结构体数据类型

struct timer_list {
     struct list_head entry; //定时器链表的入口
     unsigned long expir]]></description><category></category></item><item><title><![CDATA[Linux信号（signal)]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/68923968</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/68923968</guid><author>runfan1014</author><pubDate>Fri, 31 Mar 2017 13:14:10 +0800</pubDate><description><![CDATA[【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理，主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等，最后给了几个简单的应用实例。

 
1       信号本质
软中断信号（signal，又简称为信号]]></description><category></category></item><item><title><![CDATA[Linux IPC - POSIX信号量]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/67637418</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/67637418</guid><author>runfan1014</author><pubDate>Tue, 28 Mar 2017 17:16:55 +0800</pubDate><description><![CDATA[一.概述
            信号量是Linux进程间通信的常用方法之一，这里使用POSIX标准的信号量，而不是System V的。


二.函数接口
          1.头文件
           #include            /* For O_* constants */
           #include         /* For mode const]]></description><category></category></item><item><title><![CDATA[Linux下常用头文件释义]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/56670734</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/56670734</guid><author>runfan1014</author><pubDate>Thu, 23 Feb 2017 14:03:57 +0800</pubDate><description><![CDATA[定义全局项current ，其指向结构体struct  task_struct

    定义结构体task_struct ，只要包含此头文件即可引用当前进程

  定义含有可装载模块需要的大量符号和函数

      定义初始化和清楚函数

    定义错误编码

      定义成员访问许可值

    定义大部分内核API，包括睡眠函数以及各种变量声明

   定]]></description><category></category></item><item><title><![CDATA[Linux socket本地进程间通信]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/55509896</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/55509896</guid><author>runfan1014</author><pubDate>Fri, 17 Feb 2017 14:58:59 +0800</pubDate><description><![CDATA[使用套接字除了可以实现网络间不同主机间的通信外，还可以实现同一主机的不同进程间的通信，且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口，只是地址结构与某些参数不同。
一、创建socket流程


（1）创建socket，类型为AF_LOCAL或AF_UNIX，表示用于进程通信：


创建套接字需要使用 socket 系统调用，其原型如下：


int]]></description><category></category></item><item><title><![CDATA[Linux Fastboot Methods]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/55209610</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/55209610</guid><author>runfan1014</author><pubDate>Wed, 15 Feb 2017 14:55:43 +0800</pubDate><description><![CDATA[How to define the booting time?

The booting time we defined here is from the board be powered up to the main application working and main application be showed directly to the end user, for example]]></description><category></category></item><item><title><![CDATA[Android 启动性能优化 - kernel篇]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/55102593</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/55102593</guid><author>runfan1014</author><pubDate>Tue, 14 Feb 2017 17:37:38 +0800</pubDate><description><![CDATA[题目有点大，其实kernel的启动性能调整和Android基本没什么关系，我想应该适用所有使用Linux的嵌入式设备

时间测量


说到性能调整，第一件该干的的事就是看下时间到底消耗在哪里。俗话说的好：知己知彼，百战百胜；过度优化，万恶之首

因此手头上要有称心如意的时间测试工具，方法。其实我是不太喜欢工具的，工具这东西可遇不可求，而且不如写代码顺手。

1. PRINTK_T]]></description><category></category></item><item><title><![CDATA[给Qt应用添加外部库文件]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/55095353</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/55095353</guid><author>runfan1014</author><pubDate>Tue, 14 Feb 2017 10:23:35 +0800</pubDate><description><![CDATA[要给Qt应用添加外部库文件，需要修改对应工程目录下的 xxx.pro文件

1.把libmtdev.a libmtdev.so.1.0.0移动到工程目录下


2.在xxx.pro文件中添加如下红色行

TEMPLATE = app
TARGET = ivi_v2
INCLUDEPATH += .
QT += widgets
QTPLUGIN += qlinuxfb qevdevto]]></description><category></category></item><item><title><![CDATA[Android boot.img的由来]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/54929400</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/54929400</guid><author>runfan1014</author><pubDate>Wed, 08 Feb 2017 17:56:46 +0800</pubDate><description><![CDATA[编译完android源码后，以飞思卡尔的IMX6Q为例，生成的镜像在目录out/target/product/sabresd_6dq中
     这些镜像包括：boot.img  kernel  ramdisk.img   system.img
这里简要分析前三者


ramdisk.img
通过分析system/core/rootdir/Android.mk
 和 build/co]]></description><category></category></item><item><title><![CDATA[linux下du查看目录文件夹大小]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/54728521</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/54728521</guid><author>runfan1014</author><pubDate>Wed, 25 Jan 2017 10:04:32 +0800</pubDate><description><![CDATA[du -sh 查看当前目录大小

du -sh * | sort -n 统计当前目录大小，并按文件大小排序

du -sk filename 查看指定文件大小]]></description><category></category></item><item><title><![CDATA[linux(ubuntu)下FTP的使用]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/54708065</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/54708065</guid><author>runfan1014</author><pubDate>Tue, 24 Jan 2017 15:39:52 +0800</pubDate><description><![CDATA[1.安装、配置FTP服务组件
sudo apt-get update
sudo apt-get install vsftpd


修改ftp的配置文件 /etc/vsftpd.conf
local_enable=YES  
write_enable=YES


重启FTP服务
sudo service vsftpd restart
2.命令行FTP操作


在shel]]></description><category></category></item><item><title><![CDATA[编译安卓 lunch报错 字符格式问题]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/54705935</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/54705935</guid><author>runfan1014</author><pubDate>Tue, 24 Jan 2017 10:17:03 +0800</pubDate><description><![CDATA[在准备编译安卓源码前执行lunch报错
fanr:$ lunch aosp_arm-eng
/bin/bash: build/core/find-jdk-tools-jar.sh: /bin/sh^M: bad interpreter: No such file or directory


/bin/bash: build/core/find-jdk-tools-jar.sh: /bi]]></description><category></category></item><item><title><![CDATA[编译android源码 lunch错误]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/54694845</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/54694845</guid><author>runfan1014</author><pubDate>Mon, 23 Jan 2017 17:38:41 +0800</pubDate><description><![CDATA[按照android源码的编译步骤，执行完envsetup.sh脚本后lunch报错
fanr:$ ./envsetup.sh
fanr:$ lunch

No such file: /home/topeet/.lunchrc


Google后找到答案：


First a control question, when you said you ran envsetup.sh,]]></description><category></category></item><item><title><![CDATA[linux下find命令查找文件中包含某字段]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/54692506</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/54692506</guid><author>runfan1014</author><pubDate>Mon, 23 Jan 2017 11:34:46 +0800</pubDate><description><![CDATA[查找目录下的所有文件中是否含有某个字符串find .|xargs grep -ri "xxxx"查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名find .|xargs grep -ri "xxxx" -l]]></description><category></category></item><item><title><![CDATA[linux下批量替换文件中的字段]]></title><link>https://blog.youkuaiyun.com/runfan1014/article/details/54632157</link><guid>https://blog.youkuaiyun.com/runfan1014/article/details/54632157</guid><author>runfan1014</author><pubDate>Fri, 20 Jan 2017 16:29:37 +0800</pubDate><description><![CDATA[要将某目录中所有文件包括子目录下的文件中的 某个字段替换成其他字段
比如我这里要将qt目录下 所有文件中的aaa替换成bbb
sed -i "s/aaa/bbb/g" `grep aaa -rl ./qt`
     格式: sed -i "s/查找字段/替换字段/g"
 `grep 查找字段 -rl 路径`

其中
        -i 表示inplace edit，就地修改文件]]></description><category></category></item></channel></rss>