linux开发
杨铮的技术博客
这个作者很懒,什么都没留下…
展开
-
windows 与 Linux 使用 samba 共享文件方案
samba是什么samba是什么?能干什么?什么场合需要用到它?samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,原创 2020-08-19 22:03:19 · 496 阅读 · 0 评论 -
linux内核调试(win+VM+Centos+KGDB)
0 写在前面遥想自己上次写内核代码的时候不少死机的情况,当时使用的调试方式只能是“插桩法”,printk各种调试信息,才能判断是哪句代码有了问题,但是对于内核来说,这种方式还是很不好用,有的模块在安装时因为功能实现的不同,导致机器直接卡死,还是有着不少困难,直到系统的学习Linux内核编程时才接触到内核调试这一说法,当然,对自己模块的调试也是建立在内核调试的基本环境上的,现将有关内核调试的环境搭建做一个记录,为以后免去小麻烦。linux内核调试需要将现有的内核重新编译,且两端都是虚拟机,在这里使用的原创 2020-09-14 21:31:30 · 577 阅读 · 0 评论 -
linux程序性能数据采集方案
1 背景因公司需要对开发的软件进行性能测试,需采集并记录测试过程中程序及系统的性能数据,包括cpu使用率、内存使用率、磁盘使用率等,方便开发人员对程序的性能表现进行分析。监控程序要求能够运行在x86或者Arm嵌入式平台上的linux系统,采集性能数据的程序须尽可能轻量化和可定制,于是个人利用工作之余设计本方案。为了使用者能够实时查看到监视目标的 运行情况,方案选择C/S架构实现功能。性能采...原创 2019-10-19 18:22:21 · 1662 阅读 · 0 评论 -
windows开发 + linux编译调试环境搭建
windows开发 + linux编译环境搭建应用场景基于嵌入系统或者linux做开发的时,往往没有比较成熟的ide,大多数公司开发环境还是在windows下,修改代码后需要重新编译,这个过程中需要从windows拷贝修改代码到linux下,小略低下。因此,通常有两种应用场景:windows作为开发主机(宿主机),安装linux虚拟机作为编译环境 windows作为本地开发机,另一台...原创 2019-09-08 23:45:16 · 2185 阅读 · 0 评论 -
linux网络程序设计——6 I/O多路复用poll模型
6.3 I/O多路复用poll模型poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。6.3.1 函数原...原创 2018-07-15 23:28:51 · 390 阅读 · 0 评论 -
linux网络程序设计——5 I/O多路复用select模型
6.2 I/O多路复用select模型6.2.1函数原型该函数准许进程指示内核监听多个文件描述符中产生事件的fd,并在有一个或多个事件发生或经历一段指定的时间后才唤醒。函数原型如下:/* According to POSIX.1-2001, POSIX.1-2008 */ #include <sys/select.h> #include <sys/time.h> ...原创 2018-07-15 23:19:57 · 609 阅读 · 0 评论 -
linux网络程序设计——4 socket非阻塞模式
多路复用机制,是的可以同时监听多个套接字连接。IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到...原创 2018-07-15 23:16:03 · 1534 阅读 · 0 评论 -
linux网络程序设计——3 socket属性设置
5 linux socket网络编程之socket属性5.1函数用法#include <sys/types.h> #include <sys/socket.h>int getsockopt(int sockfd, int level, intoptname, void *optval, socklen_t *optlen);//函数用于获得某个套接字的属性i...原创 2018-07-15 23:10:27 · 2726 阅读 · 0 评论 -
linux网络程序设计——2 网络模型
2 C/S模型-TCP大部分进程间通信使用客户端-服务器模型。进程间通信指的是两个进程之间相互通信,其中,客户端进程连接服务器进程,通常是发出数据请求。一个很好的比喻是一个人给另一个人打电话,打出电话的人就好比客户端,接电话的人就好比服务器。有两点需要注意,第一,客户端需要知道服务器是否存在,如果服务器存在,服务器的地址是多少;但是在客户端连接服务器之前,服务器并不需要知道客户端的地址(甚至客户端...原创 2018-07-15 23:04:33 · 341 阅读 · 0 评论 -
linux网络程序设计——7 I/O多路复用epoll模型
6.4 I/O多路复用epoll模型epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。6.4.1函数原型epoll操作过程需要三个接口 #i...原创 2018-07-17 22:49:21 · 454 阅读 · 0 评论 -
Laptop Ubuntu16.04/14.04 安装Nvidia显卡驱动
笔记本型号机械革命(MECHREVO)深海泰坦X6Ti-S(黑曜金)15.6英寸CPU型号i5-7300HQ内存8G硬盘容量128SSD+1T机械硬盘显卡GeForce GTX 1050显存容量4G 怎样选购用于Linux的笔记本电脑?在笔记本上安装linux驱动问题主要发生在 GPU 和网卡上。网卡选 Intel 或者 Broadcom 就基本不会有问题了。显卡推荐N卡,并且是 MUXed 的连...原创 2018-06-12 23:20:40 · 888 阅读 · 0 评论 -
muduo库源码分析3——muduo事件循环分析
muduo事件循环分析 muduo网络库网络I/O模型为非阻塞reactor模式。使用linux的epoll或poll系统调用,轮寻多个socket,然后利用事先注册的事件句柄处理发生事件的套接字。muduo中一个thread与一个EventLoop绑定,即“one-loop-per-thread”模式,线程的主循环核心代码:while(1){ 1) poller_->pol...原创 2018-06-04 00:01:46 · 394 阅读 · 0 评论 -
muduo库源码分析2——QueryServer服务器启动流程
muduo网络库中,基于google::protobuf数据标准的网络服务器实例,放在example/protobuf/codec中。QueryServer服务器的功能:1) 接收客户端Tcp连接及收发数据2) 从Tcp数据报中解析出protobuf::message数据报3) 解析message并分发不同请求 根据muduo设计模式,以上每一个功能均可以看做网络服务中的一层。如处...原创 2018-06-03 23:59:16 · 401 阅读 · 0 评论 -
muduo库源码分析1——ChargenServer服务器启动流程
ChargenServer服务器启动流程在使用TCPServer时,用户需要注册connectionCallback_,messageCallback_,writeCompleteCallback_三个事件句柄,每当TCPServer中新构造一个新Acceptor对象。其构造函数会先初始化Channel成员对象acceptChannel_(loop, acceptSocket_.fd()),然后调...原创 2018-06-03 23:42:48 · 491 阅读 · 0 评论 -
c++tricks——errno多线程安全
errno的由来 在C编程中,errno是个不可缺少的变量,特别是在网络编程中。如果你没有用过errno,那只能说明你的程序不够健壮。当然,如果你是WIN32平台的GetLastError(),效果也是一样的。 为什么会使用errno呢?个人认为,这是系统库设计中的一个无奈之举,他更多的是个技巧,而不是架构上的需要。我们观察下函数结构,可以发现,函数的参数返回值只有一个,这个返回值一般可以携带错误...转载 2018-05-07 15:55:02 · 399 阅读 · 0 评论 -
c++tricks——关于linux动态链接库的分析
作者YangZheng联系[email protected]在linux系统中动态链接库文件用.so后缀标记,一般命名规则为libxxx.so。1 链接产生动态库.so与编译源码产生的二进制文件.o的关系现在有工程,源文件包括:main1.cppmyAPI.cppmyAPI.h其中myAPI.cpp,myAPI.h定义了两个函数ADD(), MINUS();main1.cpp中则调用ADD(), M...原创 2018-04-28 00:51:29 · 233 阅读 · 0 评论