
Linux编程
风中1匹狼
Live is fucking movie
展开
-
linux connect 设置连接超时【转】
原来我们实现connect()超时基本上都使用unix网络编程一书的非阻塞方式(connect_nonb),今天在网上看到一篇文章,觉得很有意思,转载如下:读Linux内核源码的时候偶然发现其connect的超时参数竟然和用SO_SNDTIMO操作的参数一致: File: net/ipv4/af_inet.c 559 timeo = sock_sndtimeo(sk, flags & O_NONBLOCK); 560 561 if...转载 2020-10-13 14:23:22 · 634 阅读 · 0 评论 -
linux内核中likely与unlikely【转】
(转自:https://blog.youkuaiyun.com/u014470361/article/details/81193023)前言 内核版本:linux 4.13 在linux内核中,经常可以看见if( likely(x))或if( unlikely(x))语句,那么likely和unlikely是什么意思呢?本文将对likely和unlikely进行一些讨论。likely和unlikely参考/include/linux/compiler.h */# define likely(转载 2020-09-12 09:32:26 · 241 阅读 · 0 评论 -
通过实例来理解 eventfd 函数机制【转】
(转自:https://www.jianshu.com/p/802f068196d9)eventfd 是 Linux 的一个系统调用,创建一个文件描述符用于事件通知,自 Linux 2.6.22 以后开始支持。# bionic/libc/include/sys/eventfd.h(Android 8.0源码)int eventfd(unsigned int initial_value,...转载 2020-05-08 11:39:52 · 678 阅读 · 0 评论 -
Linux进程间通信——eventfd【转】
(转自:https://blog.youkuaiyun.com/qq_28114615/article/details/97929524#%E5%86%99eventfd)什么是eventfdeventfd是Linux 2.6提供的一种系统调用,它可以用来实现事件通知。eventfd包含一个由内核维护的64位无符号整型计数器,创建eventfd时会返回一个文件描述符,进程可以通过对这个文...转载 2020-05-08 11:22:32 · 794 阅读 · 0 评论 -
Linux时间编程之strftime():格式化输出好帮手【转】
(转自:https://blog.youkuaiyun.com/Blazar/article/details/82962324)刚工作那时候遇到这样一个需求:要求设备能够按照用户的设置,以各种方式显示时间及日期:时间-24小时制/12小时制;日期-年月日/月日年/日月年。那时候,只懂得用最基本的方法去得到 struct tm这个结构体,然后再一个个判断条件输出。刚开始写的代码非常啰嗦,被同事笑了一番,然...转载 2020-05-08 09:29:57 · 355 阅读 · 0 评论 -
Linux多线程调用ubus导致死锁问题【转】
(转自:https://blog.youkuaiyun.com/TSZ0000/article/details/100575772)测试组发现用户进程在某种特定情况下,会出现死锁,现象是进程还在S状态,但没有任何反应,所以怀疑死锁。问题复现通过几次测试发现,进程中设置的参数恢复出厂后重启进程很大概率会出现死锁,这时候已经把复现的方法明确,但是从复现的场景来看暂时无法定位出原因。接下来就编译问题版...转载 2020-05-08 09:11:04 · 2057 阅读 · 0 评论 -
Linux下面 多线程死锁问题的调试【转】
(转自:https://www.cnblogs.com/qianxun/p/3285739.html)最近写服务,经常是单进程,多线程的,加了各种锁,很担心出现死锁问题,专门学习了一下死锁问题的诊断。死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或 系统产生了死锁...转载 2020-05-07 18:09:38 · 331 阅读 · 0 评论 -
Linux的线程锁【转】
(转自:https://blog.youkuaiyun.com/u010304442/article/details/90449716)1.互斥锁在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务。1.1锁的创建互斥锁可以动态或静态的被创建,可以用宏PTHREAD_MUTEX_INITIALIZER来静态的初始化锁,采用这种方式比较容易理解,互斥锁是pthread_mute...转载 2020-05-07 17:35:13 · 277 阅读 · 0 评论 -
sscanf的高级用法【转】
(转自:https://blog.youkuaiyun.com/noodies/article/details/4386570?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogComme...转载 2020-05-07 17:02:01 · 625 阅读 · 0 评论 -
再谈 Linux下的nanosleep函数【转】
(转自:https://blog.youkuaiyun.com/hbuxiaofei/article/details/46416605?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogC...转载 2020-05-07 15:07:19 · 937 阅读 · 0 评论 -
linux网络编程之套接字(套接口)、ip、端口理解【转】
(转自:https://blog.youkuaiyun.com/u011068702/article/details/56479927)1、套接字、ip、端口介绍1)、套接字源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口...转载 2018-05-11 01:22:01 · 703 阅读 · 0 评论 -
linux上printf输出带颜色和高级格式控制【转】
(转自:http://blog.sina.com.cn/s/blog_90cfda2f0102x6c7.html)\033[显示方式;前景色;背景色m显示方式:0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显)前景色:30(黑色)、31(红色)、32(绿色)、33(黄色)、34(蓝色)、35(洋红)、...转载 2018-05-23 14:18:38 · 806 阅读 · 0 评论 -
命令行选项解析函数(C语言):getopt()和getopt_long()【转】
(转自:https://www.cnblogs.com/chenliyang/p/6633739.html)上午在看源码项目 webbench 时,刚开始就被一个似乎挺陌生函数 getopt_long() 给卡住了,说实话这函数没怎么见过,自然不知道这哥们是干什么的。于是乎百度了一番,原来是处理命令行选项参数的,的确,正规点的大型程序一般第一步就是处理命令行参数的,接着才是主干程序。在百度和 ...转载 2018-07-25 18:34:07 · 211 阅读 · 0 评论 -
网络常用的linux系统调用【转】
(转自:http://www.cnblogs.com/sky-heaven/p/4730664.html)网络之常用的Linux系统调用下面一些函数已经过时,被新的更好的函数所代替了(gcc在链接这些函数时会发出警告),但因为兼容的原因还保留着,这些函数将在前面标上“*”号以示区别。一、进程控制 fork 创建一个新进程 clo...转载 2018-05-06 13:54:03 · 535 阅读 · 0 评论 -
Linux下简易进度条的实现【转】
(转自:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/6240250.html)在生活中,进度条是很常见的,那么,进度条是如何实现的呢? 首先,进度条的动态是利用人眼视觉暂留效果的。实际上是如下过程:先输出:[= ]表示进度是1%,刷新之后...转载 2018-07-25 18:35:31 · 202 阅读 · 0 评论 -
list_for_each与list_for_each_entry【转】
(转自:https://blog.youkuaiyun.com/u011913612/article/details/45972815)分析的结果:1.list_for_each和list_for_each_entry都是遍历链表的两个宏,本质上都是for循环。2.他们做的事情本质上都一样,A.获取链表头,B.判断链表项是不是链表头,C.指向链表的下一项。3.他们的区别:list_for_each遍...转载 2018-08-02 22:23:59 · 5499 阅读 · 0 评论 -
Linux 设备驱动开发 —— platform设备驱动应用实例解析【转】
原文:https://blog.youkuaiyun.com/zqixiao_09/article/details/50888795转载 2018-08-04 10:47:48 · 401 阅读 · 0 评论 -
LINUX设备驱动模型之PLATFORM(平台)总线详解【转】
(转自:https://www.cnblogs.com/deng-tao/p/6026373.html)/********************************************************/内核版本:2.6.35.7运行平台:三星s5pv210/******************************************************...转载 2018-08-07 08:39:31 · 520 阅读 · 0 评论 -
在linux下C语言实现对键盘事件的监听【转】
(转自:https://blog.youkuaiyun.com/alangdangjia/article/details/27697721)我们知道,在windows下有个键盘测试函数,int kbhit(void)。使用该函数需要包含头文件conio.h。执行时,kbhit测试是否有键盘按键按下,若有则返回非零值,否则返回零。在Unix/Linux下,并没有提供这个函数。在linux下开发控制台程序时...转载 2018-08-14 21:14:59 · 1334 阅读 · 0 评论 -
C语言中的复制函数(strcpy和memcpy)【转】
(转自:https://blog.youkuaiyun.com/u011391629/article/details/51407017)PS:初学算法,开始刷leetcode,Rotate array的预备知识(写的代码Time Limit Exceed)于是百度高效算法,本篇作为预备知识。1、strcpy和strncpy函数这个不陌生,大一学C语言讲过,其一般形式为strcpy(字符数组1,字符...转载 2018-08-09 22:48:15 · 1457 阅读 · 0 评论 -
C语言的四种拷贝函数【转】
(转自:https://blog.youkuaiyun.com/xingerr/article/details/70226865)头文件:#include<string.h>一、strcpy函数strcpy()函数用来复制字符串,其原型为: char*strcpy(char *dest, const char *src);【参数】dest 为目标字...转载 2018-08-10 08:35:52 · 16285 阅读 · 0 评论 -
C/C++ linux下光标定位和清屏函数(printf 实现)【转】
(转自:https://blog.youkuaiyun.com/kevinshq/article/details/8179252) #include <stdio.h> #include <unistd.h> // 清除屏幕 #define CLEAR() printf("\033[2J") // 上移光标 #def...转载 2018-08-14 19:35:31 · 608 阅读 · 0 评论 -
Linux下实现getch()函数【转】
#include <termio.h>int getch(void){ struct termios tm, tm_old; int fd = 0, ch; if (tcgetattr(fd, &tm) < 0) {//保存现在的终端设置 return -1; } tm_old = tm;...转载 2018-08-14 19:36:44 · 280 阅读 · 0 评论 -
串口termios函数【转】
(转自:https://blog.youkuaiyun.com/williamwang2013/article/details/8560552)linux使用terminfo数据库来描述终端能力以及调用对应功能的方法POSIX定义了完成终端I/O的标准方法:TERMIOS函数族#include <termios.h>#include <unistd.h>str...转载 2018-08-14 19:40:57 · 256 阅读 · 0 评论 -
struct termios结构体详解【转】
(转自:https://blog.youkuaiyun.com/vevenlcf/article/details/51096122)一、数据成员termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口。 这个结构包含了至少下列成员:tcflag_t c_iflag; /* 输入模式 */tcflag_t c_oflag; /* 输出模式 */tcflag_t c...转载 2018-08-14 20:27:02 · 662 阅读 · 0 评论 -
Linux进程间的通信方式和原理【转】
(转自:https://blog.youkuaiyun.com/c15522627353/article/details/52972941#t31)进程的概念进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放。可以认为进程是一个程序的一次执行过程。进程通信的概念进程用户空间是相互独立的,一般而言是不能相互访问的。但很多情况下进程间...转载 2018-04-21 00:29:26 · 6523 阅读 · 0 评论 -
task_struct结构体成员详解【转】
(转自:https://blog.youkuaiyun.com/bit_clearoff/article/details/54292300)1:引言进程就是程序动态运行的实例,它是承担分配系统资源的实体。我们也可以把进程当成是由一组元素组成的实体,进程的两个基本的元素时程序代码和与代码相关联的数据集合。在进程执行时,都可以被表征为一下元素:标识符:与进程相关的唯一标识符,用来区别正在执行的进程和...转载 2018-04-21 00:26:01 · 534 阅读 · 0 评论 -
socket开发中INADDR_ANY"的含义是什么?【转】
(转自:https://blog.youkuaiyun.com/jeffasd/article/details/51461568)"将sin_addr设置为INADDR_ANY"的含义是什么?INADDR_ANY转换过来就是0.0.0.0,泛指本机的意思,也就是表示本机的所有IP,因为有些机子不止一块网卡,多网卡的情况下,这个就表示所有网卡ip地址的意思。比如一台电脑有3块网卡,分别连接三个网...转载 2019-09-17 08:56:16 · 228 阅读 · 0 评论 -
TCP和UDP的区别和优缺点【转】
(转自:https://blog.youkuaiyun.com/xiaobangkuaipao/article/details/76793702#commentBox)1、TCP与UDP区别总结:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力...转载 2019-07-21 13:59:38 · 266 阅读 · 0 评论 -
linux设备驱动框架【转】
(转自:https://blog.youkuaiyun.com/kai_zone/article/details/80459334)一.Linux设备分类字符设备: 以字节为单位读写的设备。块设备 : 以块为单位(效率最高)读写的设备。网络设备 : 用于网络通讯设备。字符设备:字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序...转载 2019-06-03 12:12:54 · 259 阅读 · 0 评论 -
Linux驱动概念扫盲篇【转】
(转自:https://blog.youkuaiyun.com/czyv587/article/details/71194325)驱动程序完全隐藏了设备工作的细节. 用户的活动通过一套标准化的调用来进行,这些调用与特别的驱动是独立的; 设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上.驱动应当做到使硬件可用, 将所有关于如何使用硬件的事情留给应用程序. 一个驱动,如果它提供了对硬件能力...转载 2019-06-08 16:12:35 · 281 阅读 · 0 评论 -
linux内核之链表操作解析【转】
(转自:http://www.cnblogs.com/majiangjiang/p/5528198.html)linux内核之链表操作解析本文只是对linux内核中的链表进行分析。内核版本是linux-2.6.32.63。文件在:linux内核/linux-2.6.32.63/include/linux/list.h。本文对list.h文件进行简要分析,有必要的地方还会以图进行说...转载 2018-04-01 22:34:14 · 209 阅读 · 0 评论 -
深入分析 Linux 内核链表【转】
(转自:https://www.ibm.com/developerworks/cn/linux/kernel/l-chain/#icomments)深入分析 Linux 内核链表一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需...转载 2018-04-01 22:46:31 · 258 阅读 · 0 评论 -
Linux内核数据结构之链表【转】
(转自:https://www.linuxidc.com/Linux/2016-12/137929.htm)Linux内核数据结构之链表1、前言 最近写代码需用到链表结构,正好公共库有关于链表的。第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域。后来看代码注释发现该代码来自linux内核,在linux源代码下include/Lish.h...转载 2018-04-01 22:52:01 · 169 阅读 · 0 评论 -
Linux内核【链表】整理笔记(2) 【转】
转自:http://blog.chinaunix.net/uid-23069658-id-4725279.html关于链表我们更多时候是对其进行遍历的需求,上一篇博文里我们主要认识了一下和链表操作比较常用的几个内核API接口,其入参全都是清一色的struct list_head{}类型。至于链表的遍历,内核也有一组基本的接口(其实都是宏定义的)供开发者调用。 首先是list_for...转载 2018-04-03 00:13:39 · 330 阅读 · 0 评论 -
Linux内核【链表】整理笔记(1)【转】
转自:http://blog.chinaunix.net/uid-23069658-id-4576255.html我们都知道Linux内核里的双向链表和学校里教给我们的那种数据结构还是些不一样。Linux采用了一种更通用的设计,将链表以及其相关操作函数从数据本身进行剥离,这样我们在使用链表的时候就不用自己去实现诸如节点的插入、删除、遍历等操作了。当然,Linux也是从2.1.x内核开始才对链表...转载 2018-04-03 00:14:54 · 203 阅读 · 0 评论 -
通过printf设置Linux终端输出的颜色和显示方式【转】
(转自:http://www.cnblogs.com/clover-toeic/p/4031618.html)通过printf设置Linux终端输出的颜色和显示方式前言 在Linux终端下调试程序时,有时需要输出大量信息。若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据。 终端的字符颜色由转义序列(Escape Sequen...转载 2018-04-05 16:51:04 · 554 阅读 · 0 评论 -
Linux编程——文件 IO操作【转】
(转自:https://blog.youkuaiyun.com/baidu_28312631/article/details/47828711)Linux文件 I\O 介绍 1. Linux系统调用Linux系统调用(system call)是指操作系统提供给用户程序的一组“特殊接口”,用户程序可以通过这组“特殊”接口来获得操作系统提供的特殊服务。 为了更好的保护内核空间,...转载 2018-04-14 10:53:20 · 321 阅读 · 0 评论 -
Linux进程基础教程详解【转】
(转自:http://www.jb51.net/article/111091.htm)计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令 (instruction)。所谓的程序(program),就是这样一系列指令的所构成的集合。通过程序,我们可以让计算机完成复杂的操作。程序大多数时候被存储为可执行的文件。这样一个可执...转载 2018-04-14 11:22:12 · 199 阅读 · 0 评论 -
详解wait和waitpid函数【转】
(转自:https://blog.youkuaiyun.com/kevinhg/article/details/7001719)#include <sys/types.h> /* 提供类型pid_t的定义 */#include <sys/wait.h>pid_t wait(int *status)进程一旦调用了wait,就立即阻塞自己,由wait自动分析...转载 2018-04-18 11:21:58 · 294 阅读 · 1 评论