
Linux C学习
wsqyouth
鹅厂码农 公众号:泡泡思考笔记
展开
-
rapidjson安装学习
这里主要记录几个要点,后面来补充吧,很晚了源码是鹅厂大佬写的,佩服佩服~一、RapidJSON介绍及资料RapidJSON是腾讯开源的C++ JSON解析及生成器,只有头文件的C++库,跨平台。RapidJSON 是一个 C++ 的 JSON 解析器及生成器。它的灵感来自 RapidXml。特点:小而全。 同时支持SAX和DOM风格API快。性能可与 strlen() 相比独...原创 2019-11-10 23:04:28 · 3073 阅读 · 0 评论 -
POSIX线程详解
经过一个星期的复习,终于动手写下来,作为专栏的第一篇文章,本文主要对POSIX 线程进行一个提纲挈领的贯穿讲解,具体有些细节大家可以参考《UNP》,《APUE》等书籍。本文参考IBM的系列文章 https://www.ibm.com/developerworks/cn/linux/thread/posix_thread1/index.html,http://www.ilovecpp.com/...原创 2019-04-13 22:51:09 · 9012 阅读 · 2 评论 -
C语言文件操作
最近一直在写毕业论文,周末过来记录下一个文件操作的功能。参考:https://www.cnblogs.com/xudong-bupt/p/3478297.htmlhttps://www.javatpoint.com/fprintf-fscanf-in-c一、文件模式#include <stdio.h>FILE *fp;fp=fopen(文件名, 打开方式);对应...原创 2019-03-23 20:48:33 · 431 阅读 · 0 评论 -
Posix线程和C++11多线程学习
笔者最近在项目中用到了多线程部分,其中可以使用POSIX pthreads和C++ threads,因此本文尝试对二者进行对照学习,之后通过提取项目中的一个demo进行实战。参考文章:https://solarianprogrammer.com/2011/12/16/cpp-11-thread-tutorial/https://www.kancloud.cn/wangshubo1989/n...原创 2018-11-11 21:37:12 · 2863 阅读 · 0 评论 -
Pthread线程基础学习
后面会尝试使用冰搜和goole搜索来学习技术,互联网上知识的学习也是符合二八定律的,既然如此,我们何不去选择最好的文章呢。文章参考:https://randu.org/tutorials/threads/http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.htmlhttps://blog.youkuaiyun.com/stpeace/...原创 2018-11-03 22:42:57 · 5453 阅读 · 0 评论 -
深入理解TCP通信
这大概是自己博客上面第三次写TCP通信demo了,总是写同样的内容也不太好啊,不过每一次都比前一次进步一点。这次主要使用了VIM编辑工具、gdb调试、wireshirk、netstat查看网络状态。参考《C++服务器视频教程》、《Unix网络编程》一、VIM常用命令vim server.cpp #打开一个文件:w 写入文件:wq 保存并退出:q! 不保存退出显示行号 ...原创 2018-10-25 16:52:30 · 1532 阅读 · 0 评论 -
自定义结构体的对齐问题
一、跨平台通用数据类型之前的一篇博客Linux数据类型(通用移植),已经自定义尝试解决了数据通用类型问题。这里通过源码进行分析,利用源码进行解决问题。在<stdint.h>中我们发现:typedef signed char int8_t;typedef unsigned char uint8_t;typedef short int16_t;typedef unsign...原创 2018-10-05 22:23:08 · 2383 阅读 · 0 评论 -
二叉树的非递归遍历
本文全部参考自:https://blog.youkuaiyun.com/gogogo_sky/article/details/70145550 特别感谢,大家一起学习吧。在我们了解了最简单的递归遍历以后,现在来说说用栈辅助,非递归实现二叉树的前序,中序,后序遍历打印 一、非递归实现前序遍历打印前序遍历,访问的顺序为根->左->右; 前序遍历的思想: (1)首先定义...转载 2018-07-11 21:47:27 · 3076 阅读 · 1 评论 -
笔试中输入数据常见格式总结
笔试中输入数据常见格式总结原创 2018-07-08 22:21:57 · 1192 阅读 · 0 评论 -
Ubuntu16.04安装Qt+qwt+fftw
本文参考网上诸多文章集合而成,重点有如下几篇,特此感谢。 Qt和qwt安装: https://www.jianshu.com/p/afbc42ad2cfd https://blog.youkuaiyun.com/lsjtsj/article/details/20313075 https://blog.youkuaiyun.com/ShoneX98/article/details/740123...原创 2018-05-12 20:24:13 · 7034 阅读 · 13 评论 -
Linux下TCP/IP编程--UDP实战
本文参考《嵌入式Linux编程与实践教程》一书,以及http://www.cnblogs.com/skyfsm/p/6287787.html 给出一个简单的UDP模型代码并分析UDP一些高级特性,特此感谢。本人已经发表了Linux下TCP实战的代码,如有参考请点击:TCP实战。一、概念UDP是一个简单的传输层协议,是一种非连接的、不可靠的数据报文协议,和TCP有较大区别。...原创 2018-05-09 21:24:47 · 1045 阅读 · 0 评论 -
linux常用函数记录
本文转自: https://blog.youkuaiyun.com/qq_29344757/article/details/80004483 https://blog.youkuaiyun.com/qq_29344757/article/details/80004746一、获取/设置Linux系统的网络信息1.获取IP地址、子网掩码地址、Mac地址、广播地址#include <s...转载 2018-05-09 17:27:59 · 515 阅读 · 0 评论 -
Linux数据类型(通用移植)
本文参考: https://blog.youkuaiyun.com/smallfish_love/article/details/50782905arm平台下的数据类型重定义typedef char s8;typedef unsigned char u8;typedef short s16;typedef u...原创 2018-05-08 22:03:29 · 1337 阅读 · 0 评论 -
gcc与g++的区别
一、编译的四个阶段预处理:编译处理宏定义等宏命令(eg:#define)——生成后缀为“.i”的文件 编译:将预处理后的文件转换成汇编语言——生成后缀为“.s”的文件 汇编:由汇编生成的文件翻译为二进制目标文件——生成后缀为“.o”的文件 连接:多个目标文件(二进制)结合库函数等综合成的能直接独立执行的执行文件——生成后缀为“.out”的文件在我们理解了上述四个...原创 2018-05-07 12:17:46 · 21148 阅读 · 2 评论 -
TCP利用封包和解包解决“粘包”问题
本文参考自徐晓鑫《后台开发》,给出一个可实际应用的demo,该demo核心在于封包和解包的思想,以及自定义发送、接收数据。一、TCP粘包现象what?TCP是个“流”协议,即没有边界。由于这个特性以及实际的网络情况,在进行数据传输时假设我们连续调用send分别发送两段数据data1和data2,在接收端有以下几种代表性的情况:先接收到data1,然后接收到data...原创 2018-04-27 17:39:43 · 4410 阅读 · 2 评论 -
根据结构体成员变量的地址得到结构体起始地址
给定一个结构体定义type,这个结构体中某个成员变量的名字member以及它的地址ptr,如何得到包含此成员变量的结构体的地址?struct father_t...原创 2018-04-25 21:26:23 · 16257 阅读 · 0 评论 -
编译与链接复习
参考徐晓鑫之《后台开发》,复习之前知识点。编译与链接执行命令:g++ helloworld.cpp编译得到a.out文件;执行./a.out即可输出。 该命令可以分解为4个步骤:预处理、编译、汇编和链接。编译与链接分解为4个步骤,分别是预处理(Prepressing)、编译(Compilation)、汇编(Assembly)、和链接(Linking)。1. 预处...原创 2018-03-28 11:17:14 · 477 阅读 · 0 评论 -
Linux下TCP/IP编程--TCP实战(select)
本文参考自徐晓鑫《后台开发》,记录之。一、为什么要使用非阻塞I/O之select初学socket的人可能不爱用select写程序,而习惯诸如connect、accept、recv/recvfrom这样的阻塞程序。 当让服务器同时为多个客户端提供一问一答服务时,很多程序员采用多线程/进程模型来解决。但是若同时响应成百上千的连接请求,无论是多进程还是多线程都会严重占据系统资源降低...原创 2018-03-16 20:32:32 · 2281 阅读 · 0 评论 -
Linux下TCP/IP编程--TCP实战
本文参考自徐晓鑫《后台开发》,重点复习总结TCP通信流程,读者也可以参考: http://blog.youkuaiyun.com/wqc_csdn/article/details/51513543,谢谢。一、客户端和服务端的操作流程服务器端: socket() –&amp;gt; bind() –&amp;gt; listen() –&amp;gt; accept() –&amp;gt; recv() –&a原创 2018-03-16 15:56:39 · 18394 阅读 · 3 评论 -
嵌入式Linux C基本知识点总结
学习这块知识点有好久了,最近借一本书的框架来对基本的知识点进行总结,参考《嵌入式Linux上的C语言编程实践》进行总结记录之。一、 基本开发环境Linux下C语言开发环境使用工具:程序生成工具GCC、程序调试工具GDB、工程管理工具为make和Makefile。 开发流程:使用编辑工具编写C语言源文件,然后编译生成机器代码为主的二进制可执行程序。 编译流程:C语言经过编译原创 2018-01-13 20:47:43 · 6468 阅读 · 2 评论 -
时间日期与时间戳转换(Linux C)
本文主要学习三个知识点,第一是UTC时间、GMT时间的概念;第二是在Unix环境下UTC时间与时间戳的转换;第三是在C语言中如何修改时区。 本文参考了《UNP》以及 http://blog.youkuaiyun.com/foxir/article/details/43916601 http://blog.youkuaiyun.com/ljafl9988/article/details/16847935原创 2018-01-10 11:40:04 · 28307 阅读 · 0 评论 -
嵌入式软件调试常用知识点
本博客参考王利涛老师的教程,以及自己之前学习的知识点,特此总结。主要涉及输入输出重定向和宏定义的一些用法。原创 2018-01-02 22:53:30 · 851 阅读 · 0 评论 -
C语言类型数据所占字节数
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,转载 2017-12-02 12:01:39 · 21087 阅读 · 0 评论 -
centos linux下的常用命令
本次博客主要总结复习了最基本的Linux指令,按照自己的总结将其分为几个方面,希望和大家一起加强学习,Linux路漫漫其修远兮,吾将上下而求索~原创 2017-09-18 22:02:07 · 696 阅读 · 0 评论 -
深入分析根据字节取数据
如何将一个数据包中的部分数据提取出来,并转化为有效数据,相信这是很多做网络、串口的同仁们遇到的问题,希望这篇文章能给你一些思路:)原创 2017-09-13 16:02:44 · 1486 阅读 · 0 评论 -
petalinux 2017.2安装指南
—-说明 petalinux 2017.2的安装和之前版本有一些改变,如果没有注意,很有可能安装失败。这篇博客是上一篇博客的一个补充,因此这里只对关键的部分进行记录。petalinux2017.2必须使用普通用户权限安装,安装路径在/home下。一、检测环境由于petalinux目前最新的版本所需空间都比较大,因此建议安装前查看磁盘空间是否够用。比如我需要安装在home路...原创 2017-09-09 11:36:45 · 7149 阅读 · 10 评论 -
petalinux 2015.4&& 2016.2安装指南
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如果希望完整的将petalinux环境搭建完成,建议一定要按照下面三个大步骤进行安装,不要打乱顺序。其中第一阶段主要是ubuntu环境的搭建及软件的下载;第二阶段是安装petalinux需要的各种库文件,为下一步真正安装做准备;第三步骤才是真正的安装及验证。如果第二阶段的库没有安装完整那么安装petalinux很可能失败,安原创 2017-09-07 22:17:06 · 6126 阅读 · 0 评论 -
创建petalinux工程的两种方法
PetaLinux建立工程的两种方法,第一种方法是基于BSP建立工程,第二种方法是创建一个自定义工程。 本文全部参考自:http://blog.youkuaiyun.com/u013793399/article/details/53054734 去除了搞笑部分,经实际验证后撰写。基于BSP建立工程PetaLinux BSP简要介绍 ...原创 2017-08-25 21:36:08 · 7323 阅读 · 3 评论 -
linux C读书笔记
完成最近的学习任务,把《linux C程序设计 王者归来》吴岳编著这本书自己不懂的和一些底层的知识点记录下来,好记性不如烂笔头,加油加油!原创 2017-07-18 20:40:09 · 690 阅读 · 0 评论 -
C语言中位操作
一、基本位操作 | 或 & 与 ~ 取反 ^ 异或 左移<< 右移 >>二、位操作的常见用法1.获取某位的值#####define BitGet(Number,pos) ((Number)|= 1<<(pos)) //把某位置1 #####define BitGet(Number,pos) ((Number) &=转载 2016-09-27 18:07:58 · 688 阅读 · 0 评论 -
结构体学习要点
在手机app上看到一个老外写的英文的关于结构体的文章,自己就按照自己的理解意译了一遍,写下来和大家共同学习。老外还是写的清晰可读,大家好好学习下,特别是结构体内存分配和内存对齐问题是其重点。一、结构体的定义编程时,用一个变量名指代一组数据很方便。结构体能够存储多个多种类型的数据,同时用一个变量名来表示,这使程序修改很方便,因为设计紧凑。结构体用在有大量数据被一起存储的情况,它们可以存储原创 2016-04-18 20:42:52 · 821 阅读 · 0 评论 -
Linux下C语言程序的编译过程
Linux下C语言程序的编译过程使用gcc编译程序时,编译工程分为4个阶段:(1)预处理:(Pre-Processing)(2)编译:(Compiling)(3)汇编:(Assembling)(4)链接:(linking)Linux程序员可以根据自己的需要让gcc在编译的任何阶段结束,以便检查或使用编译器在该阶段输出信息,或者对最后生成的二进制文件进行控制,以便加入不同数量原创 2016-04-15 12:00:18 · 9864 阅读 · 0 评论 -
Linux常用命令 经典版
本笔记全文参考 《LinuxC编程实战》 董永清,为了方便自己学习,特于2016年4月15日整理如下,加油! --王茂春1. 查看当前目录命令pwd格式:pwd例如:执行命令pwd,系统显示当前目录 2. 改变当前目录cd格式:cd 例如:执行命令cd原创 2016-04-15 11:10:51 · 665 阅读 · 0 评论 -
Linux下C的内存对齐
关于结构体内存对齐(在没有#pragma pack宏的情况下) :•原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。•原则2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储。(struct a里存有struct b,b里有char,int,double等元素,那b原创 2016-02-29 12:43:51 · 4052 阅读 · 0 评论 -
linux C宏定义实现打印调试信息
本文仅实现了三种宏定义调试 #define LOG(s) 日志显示(文件名:行号}+日志信息 #define ERROR(s) 错误信息位置(级别+文件名+函数名+行号+错误信息) #define PrintArray2D(arr,m,n)原创 2016-02-28 13:56:44 · 5685 阅读 · 1 评论 -
linux下静态库编译使用复杂版
通常情况下,由于主函数文件main.cpp要调用多个头文件,所以编译时比较复杂,比如需要使用类似makefile文件,那么,此时的想法是将其他算法函数生成到一个静态库文件,引用该库文件头即可代码:add.cpp#include "add.h"int add(int a, int b){ return a + b;}add.h#ifndef _ADD_H#def原创 2016-02-28 10:54:51 · 610 阅读 · 0 评论 -
linux下简单编译与静态库编译使用
库函数,那么一般来说库函数分为两种方式:静态库和动态库。两者的区别其实很小,静态库是必须要链接到执行文件中去的,而动态库是不需要链接到最后的执行文件中的。怎么理解呢?也就是说,对于最后的执行文件而言,你是否删除静态库无所谓。但是,一旦你删除了动态库,最后的执行文件就玩不转了。 这里使用平时的方法和静态库方法进行简单的测试,代码 add.cpp原创 2016-02-28 10:13:50 · 965 阅读 · 2 评论