c&c++
文章平均质量分 52
colorfulshark
目前在研究嵌入式Linux,希望能结识志同道合的朋友
展开
-
C++运算符重载
C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如: class complex { public: complex(double r=0.0,double I=0.0){real=r;imag=I;} void display(); private: double real; dou转载 2016-02-05 18:21:18 · 568 阅读 · 0 评论 -
【Linux网络编程】超时检测
在网络编程中超时检测是一个比较常见的操作,因为网络连接具有很大的不确定性,而很多网络操作函数默认都是阻塞式的,因此如果不设置超时,可能会造成永久等待状态出现。设置套接字选项setsockopt【注意】如果程序一直执行,设置的套接字选项一直有效,对所有跟套接字描述符相关的操作都有效int setsockopt(int socket, int level, int option_name,原创 2017-04-11 20:30:16 · 1945 阅读 · 0 评论 -
【Linux网络编程】组播代码
//head.h#include <stdio.h>#include <unistd.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#include <fcntl.h>#include <strings.h>#include <sys/socket.h>#incl原创 2017-04-12 20:49:08 · 841 阅读 · 1 评论 -
【Linux网络编程】广播、组播与本地网络通信
广播广播实现的是1对多的情况,有一个发送端多个接收端【注意】 1、广播只能在局域网中转发,默认的路由器一般不支持数据在外网转发。 2、采用的是UDP协议发送端编程流程1、设置通信标准2、设置网络信息结构体 【注意】 要制定广播地址(不能是自己的IP地址)3、设置套接字属性,具有广播功能,在使用setsockopt时,第四个参数指定整形数据,并且是非0值,才会有效,如果为0,则无效。4、发送数据原创 2017-04-12 20:40:14 · 973 阅读 · 0 评论 -
【Linux网络编程】SQLite3 数据库编程
SQLite3并没有提供man手册版的API文档,但是官网有API文档。安装sudo apt-get install sqlite3sudo apt-get install libsqlite3-dev在Shell中使用创建数据库文件sqlite3 db_name.db显示所有命令.help退出sqlite3.quit显示当前打开的数据库文件.database显示数据库中所有表名.tables原创 2017-04-14 11:35:40 · 735 阅读 · 0 评论 -
【Vim】强劲替代品——Qt Creator
作为一名Linux开发人员,使用Vim编码似乎是一种潜规则,连老师上课都教,连考试都考。我甚至Vim确实是一款可以很强大的代码编辑工具。但一百个人就有一百种不同的想法,使用Vim的过程中,遇到了很多不爽的事,花了大量的时间来解决,最终也只达到勉强可用的状态,问题主要集中在代码补全,安装了YCM后,Vim变得卡卡的。我知道Vim不是自己的菜。Qt Creator说说我为什么会选择这个IDE吧。其实U原创 2017-04-05 19:26:40 · 5800 阅读 · 1 评论 -
【Python】用C语言编写Python模块
python扩展实现方法–python与c混和编程原创 2017-04-15 16:50:14 · 1759 阅读 · 0 评论 -
【IO进程】设置进程调度策略(实时进程)
如果你使用Linux而不是裸机来控制GPIO与传感器通信,你可能会遇到时序乱掉的情况,这是因为传感器的发送时序间隙是微秒级,而Linux作为一个非实时的多任务系统,如果你的进程时间片用完,那么就会被调度出去等待其它进程运行,这样我们就没有办法精确操控时间,如果错过了某段电平,就可能会读出错误的数据甚至整个程序陷入死循环,为了能让一个进程不被打断的运行完,需要设置一下进程的优先级。APIsched_原创 2017-04-16 11:08:18 · 1611 阅读 · 0 评论 -
【Python】使用C语言来扩展Python模块
在做毕业设计的时候,我用Python来实现项目的应用层,底层的驱动由于对时间要求比较严格(微秒级),用Python会出问题,毕竟Python就不是用来做底层开发的。这就涉及到在Python中使用C程序的问题,下面给出几种解决方案。commands模块使用这个模块,我们可以执行一些外部程序,并且获取其返回值以及执行状态,如status, output = commands.getstatusoutp原创 2017-04-21 09:00:01 · 2241 阅读 · 0 评论 -
【Linux内核】Ubuntu下printk函数无法在终端显示
在Ubuntu下使用insmod安装模块的时候,发现预设的调试信息并没有输出,但是使用dmesg命令可以看到在日志中确实有调试信息,下面分析一下可能的情况。printk信息的输出去向这是在内核的命令行参数console=ttyXXX里指定死了,比如console=tty1表示printk的信息输出到终端1。如果是这种情况,你需要使用Ctrl+Alt+(F1-F6)来切换终端。日志输出级别过低用pr原创 2017-06-28 09:16:42 · 4111 阅读 · 1 评论 -
【IO进程】守护进程,线程创建、同步与互斥
【1】守护进程什么是守护进程? 在后台做服务的一个程序。有一定的生命周期,从系统启动的时候开始运行,到系统结束的时候终止,并且守护进程不受终端的控制,要想从实际上摆脱终端的控制,必须脱离会话组组长和进程组组长,然后让自己成为会话组的组长和进程族的组长。(2)创建守护进程的步骤: a、创建父子进程,结束父进程,让子进程继续运行 fork exit原创 2017-03-30 19:59:48 · 642 阅读 · 0 评论 -
【IO进程】进程
概念什么是进程?以及进程和程序的一个区别:程序: 把一个源代码文件经过编译器编译之后,生成一个文件,是可以执行的,这个可执行文件就是程序 text | data bss 代码段 数据段(data:全局或者静态(static)已经初始化的变量。bss: 全局或者静态未始化的变量 )程序不执行,一直存放在磁盘或者硬盘,静态进程: 是描述程序的原创 2017-03-29 20:00:46 · 1480 阅读 · 0 评论 -
【IO进程】进程间通信
【1】进程间通信概述每一个进程虽然独立,但也需要让不同的进程实现数据的传输、还有信号通知通信方式:传统的进程间通信: 无名管道、有名管道 --> 数据传输 信号 -》 异步通知系统5(System V)通信方式: 共享内存、消息队列 --》 数据传输 信号量集 --》 同步和原创 2017-04-01 18:53:02 · 890 阅读 · 0 评论 -
使用limit头文件查看特定机器上数据类型数据范围
在不同的机器上或者使用不同的编译器,会导致相同的数据类型具有不同的精度范围,因此,在编程之前先要了解各种数据类型的范围,才能在程序中高效的使用内存。#include#include#include using namespace std;int main(){ cout << "type: \t\t" << "************size**************"<原创 2015-08-10 17:47:15 · 551 阅读 · 0 评论 -
memset()函数用法解析
功能:将一块内存区域按字节初始化为zhi'ding'de原创 2014-11-15 13:57:25 · 770 阅读 · 0 评论 -
C++ 图的几种表示方法解析
最近学习了一下图论,对于图的表示方法自然也有所接触,在题目数据范围较小的时候,我们可以使用邻接矩阵,在图的邻接矩阵表示法中: ① 用邻接矩阵表示顶点间的相邻关系 ② 用一个顺序表来存储顶点信息设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵:【例】下图中无向图G 5 和有向图G 6 的邻接矩阵分别为A1和A2 。原创 2015-02-04 20:11:46 · 5527 阅读 · 0 评论 -
【IO进程】文件IO
【1】文件IO必须使用操作系统提供输入输出函数来实现文件的读写、定位操作,不能在其他的系统中使用。 文件描述符: 实际上是一个非负的整形数据,文件指针是文件描述的一个软连接 最大数据:0 ~ 1023 打开得文件袋描述符的个数是1024个 无缓冲: 文件IO对比标准IO:标准IO通过对常规文件进行操作,文件IO通常对特殊文件记性操作;文件IO也可以对常规文件原创 2017-03-29 12:55:49 · 795 阅读 · 0 评论 -
【IO进程】标准IO
IO针对文件来进行操作, 在linux系统当中几乎所有东西被看做是一个文件来处理文件: 一部分功能就是用来对数据进行存储,常用的文本数据、还有二进制数据 特殊文件是帮助用户站到内存中某一个对象,或者找到对应的设备文件文件的名字: 类型: bcd-lsp 类型 符号 作用 常规文件 - 它用来存储文本数据、还有二进制数据 设备文件 bc 对硬件原创 2017-03-27 19:21:07 · 751 阅读 · 0 评论 -
【IO进程】Linux C中回收线程资源的方法
问题描述在写网络服务器程序时可能需要实现多线程接收多个客户端的数据,可以在一个循环中调用accept等待client的connect,connect之后创建thread,这样其实有一个问题,服务器程序需要长期运行,长时间线程的创建,线程资源的回收就是一个问题。Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的。而默认的条件下,一个线程结束后,其对应的资源不会被释放转载 2017-04-10 18:21:43 · 2577 阅读 · 0 评论 -
【C语言】编程规范——头文件
背景对于C语言来说,头文件的设计体现了大部分的系统设计。 不合理的头文件布局是编译时间过长的根因,不合理的头文件实际上不合理的设计。术语定义依赖 特指编译依赖。若x.h包含了y.h,则称作x依赖y。依赖关系会进行传导,如x.h包含y.h,而y.h又包含了z.h,则x通过y依赖了z。依赖将导致编译时间的上升。虽然依赖是不可避免的,也是必须的,但是不良的设计会导致整个系统的依赖关系无比原创 2017-03-24 19:05:50 · 9061 阅读 · 0 评论 -
【Linux网络编程】IO模型与服务器模型
IO模型阻塞IO一般系统默认的IO为阻塞IO,等待IO时进程或线程睡眠。非阻塞IO就在执行到IO操作时,没有从缓冲区读到数据,就会从IO操作下面继续执行 注意:对于这种操作一般采用轮询(循环)的方式fcntl 处理描述符相关联的操作方式int fcntl(int fd, int cmd, ... /* arg */ ); 功能: 文件描述符的控制操作函数,具体操作有命令来原创 2017-04-10 19:08:26 · 411 阅读 · 0 评论 -
【C语言】编程规范——函数
背景函数设计的精髓:编写整洁函数,同时把代码有效组织起来。整洁函数要求:代码简单直接、不隐藏设计者的意图、用干净利落的抽象和直截了当的控制语句将函数有机组织起来。代码的有效组织包括:逻辑层组织和物理层组织两个方面。逻辑层,主要是把不同功能的函数通过某种联系组织起来,主要关注模块间的接口,也就是模块的架构。物理层,无论使用什么样的目录或者名字空间等,需要把函数用一种标准的方法组织起来。例原创 2017-03-26 09:17:07 · 3006 阅读 · 0 评论 -
【Android】NDK的使用常见问题
Android提供了NDK工具用以编译能够Android设备上运行的C/C++程序,本质上就是交叉编译,下面给出几篇关于NDK相关的文章。教程生成设备专用的toolchain在 ${NDKROOT}/build/tools 下有两个脚本:make_standalone_toolchain.py 和 make-standalone-toolchain.sh,这两个脚本的功...原创 2017-12-27 13:22:06 · 2117 阅读 · 1 评论