
Linux
文章平均质量分 82
canger_
Linux C/C++、golang、云原生
展开
-
Linux多线程间同步
竞争与同步当多个线程同时访问其所共享的进程资源时,需要相互协调,以防止出现数据不一致、不完整的问题。这就需要线程同步。一、信号量信号量是一个计数器,用于控制访问有限共享资源的线程数。头文件:semaphore.h int sem_init (sem_t* sem, int pshared,unsigned int value);功能:创建信号量sem - 信号量ID,输出。pshared - 一般取0,表示调用进程的信号量。 非0表示该信号量可以共享内存的方式, 为多个进程所共享原创 2021-03-13 00:24:56 · 527 阅读 · 0 评论 -
Linux进程间通信方式
进程通信进程间通信(IPC)进程之间交换数据的过程叫进程间通信进程间通信方式一、简单的进程间通信 命令行:父进程通过exec函数创建子进程时可以附加一些数据 环境变量:父进程通过exec函数创建子进程顺便传递一张环境变量表 信号:父子进程可以根据进程号相互发送信号,进程简单通信 命令行、环境变量只能单向传递,信号过于简单,且文件通信不能实时 文件:一个进程向文件中写入数据,另一个进程从文件中读取出来二、传统进程间通信管道(fifo) 管道是一种古老的通信的方式(基本上不再使用原创 2021-03-12 23:20:59 · 248 阅读 · 0 评论 -
计算机网络重要知识点
1.ARP地址解析答:1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址, 如果有则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。3: 当本网络的所有主机...原创 2018-09-21 12:27:49 · 759 阅读 · 0 评论 -
Linux开发调试工具
Linux开发调试工具在Linux日常使用中,最常用的命令自然是sudo, ls, cp, mv, cat等,但作为后台开发者,上述命令远远不够。开发及调试工具介绍了从“编辑 -> 编译 -> 分析目标文件 -> 追踪调用过程”的全套命令。开发及调试编辑器:vim编译器:gcc/g++调试工具:gdb查看依赖库:ldd二进制文件分析:objdumpELF...原创 2018-10-26 14:52:06 · 960 阅读 · 0 评论 -
Linux文件处理工具及命令
Linux文件处理命令文件处理部分介绍了查找、统计、替换等基本文本操作命令文件处理命令文件查找:find文本搜索:grep排序:sort转换:tr按列切分文本:cut按列拼接文本:paste统计行和字符:wc文本替换:sed数据流处理:awk文件处理Everything is file in Linux. 在Linux环境下,一切皆文件,对文本处理相当频繁,所以...原创 2018-10-26 15:05:11 · 283 阅读 · 0 评论 -
Linux系统信息命令
系统信息性能监视工具对于程序员的作用就像是听诊器对于医生的作用一样。系统信息主要针对于服务器性能较低时的排查工作,主要包括CPU信息,文件I/O和内存使用情况,通过进程为纽带得到系统运行的瓶颈。1. 进程查询:ps1.1查看正在运行进程 # 常结合grep筛选信息(e.g, ps -ef | grep xxx) ps -ef1.2以完整格式显示所有进程 # 常结合gre...原创 2018-11-20 12:12:43 · 294 阅读 · 0 评论 -
Linux网络工具
网络工具网络工具部分只介绍基本功能,参数部分一笔带过。这部分重点不在于工具的使用而是对反馈的数据进行解读,并且这部分命令功能的重合度还是比较高的。1. 网卡配置(链路层):ifconfig显示设备信息 # 可以显示已激活的网络设备信息 ifconfig启动关闭指定网卡 # 前一个参数为具体网卡,后一个为开关信息 # up为打开,down为关闭 ifconfig ...原创 2018-11-20 12:18:57 · 660 阅读 · 0 评论 -
Linux正则表达式与sed工具的使用
什么是正则表达式简单地说,正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。基础正则表达式语系对正则表达式的影响LANG=C时:0 1 2 3 4…A B C D…a b c d…zLANG=zh_CN时:0 1 2 3 4…a A b B c C…z Z一般我们在使...原创 2018-12-10 21:06:11 · 383 阅读 · 0 评论 -
Linux C实现更改文件时间
主要是通过utime()这个函数实现的头文件:#include <sys/types.h> #include <utime.h>函数定义:int utime(const char * filename, struct utimbuf * buf);函数说明:utime()用来修改参数filename 文件所属的inode 存取时间。结构utimbu...原创 2018-08-13 17:50:37 · 4053 阅读 · 0 评论 -
Linux C基于TCP的网络编程(三次握手)
网络通信(TCP)TCP(面向连接的通信协议):在通信中时刻保持连接,这种通信方式类似于打电话,能保证安全可靠数据不丢失,但是与UDP相比传输速度较低。 TCP和UDP通信收发函数区别:记住socket中是否存放有IP 和端口信息,TCP有,UDP无。同时TCP服务器需要多个 socket 对象,对应多个连接。TCP编程模型:进程A:创建socket->准备地址->绑...原创 2018-08-06 21:50:10 · 4134 阅读 · 1 评论 -
ps和kill命令的参数及含义
ps:进程查看命令.1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。2)ps -A 显示所有程序。3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。4)ps -e 此参数的效果和指定"A"参数相同。5)ps e 列出程序时,显示每个程序所使用的环境变量。6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。7)...原创 2018-07-24 19:56:07 · 5482 阅读 · 0 评论 -
进程控制(fork,vfork,exec,exit)
进程标识每个进程都有一个非负整型表示的唯一进程ID。(虽然是唯一的,但是进程ID是可以复用的,比如当一个进程终止时,其ID就成为复用的候选者,即唯一性是指当前场景下)ID为0的进程通常是调度进程,常被称为交换进程,属于内核的一部分,其并不执行任何磁盘上的程序,也叫作系统进程。ID为1的进程通常是init进程,可以通过终端命令 ps aux查看,一般为/sbin/init。init进程绝...原创 2018-07-24 20:54:49 · 558 阅读 · 0 评论 -
孤儿进程、僵尸进程
在unix/linux中,正常情况下,子进程是通过父进程创建的。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程到底什么时候结束。 当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。 孤儿进程 当创建子进程的父进程先结束,子进程就会变成孤儿进程,会被孤儿院(init,进程编号为...原创 2018-07-25 20:58:17 · 372 阅读 · 0 评论 -
Linux环境下段错误分析及调试方法
年轻时的每一个段错误,都会成为你程序人生上的垫脚石。如果是还在学习阶段的同学,希望能先通过自己的判断来找出段错误的地方。本篇文章系转载及整理,原文链接如下:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.htmlhttps://zhuanlan.zhihu.com/p/37571803 1. 段错误是什么...转载 2018-07-20 17:17:33 · 860 阅读 · 0 评论 -
信号(signal,kill,raise)
信号:中断:中止、暂停当前正在执行的进程,转而去执行其它的任务。 分类:1.硬中断:来自硬件设备的中断 2.软中断:来自其它程序的中断 而信号就属于软件中断,它提供了一种处理异步事件的方法。信号的分类: 不可靠信号(这里不可靠指的是信号可能会丢失) 1.编号小于SIGRGMI(34)的信号都是不可...原创 2018-07-26 20:44:58 · 1541 阅读 · 0 评论 -
alarm(),pause(),sleep()函数
alarm函数:unsigned int alarm(unsigned int seconds);功能:使用alarm可以设置一个定时器(闹钟时间),如果设置为0,则表示取消之前的设置;否则在将来的某个时刻该定时器会超时,当定时器超时时,产生SIGALRM信号。如果忽略或不捕捉此信号,则其默认动作是终止调用该alarm函数的进程。注:每个进程只能有一个闹钟时间。返回值:0或以前闹钟设...原创 2018-07-30 17:04:07 · 1858 阅读 · 0 评论 -
信号集与信号屏蔽
信号集:表示多个信号的数据类型,由128个二进制位组成,每个二进制位表示一个信号。与其相关的函数有: int sigemptyset(sigset_t *set); 功能:清空信号集 int sigfillset(sigset_t *set); 功能:填满信号信 int sigaddset(sigset_t *set, i...原创 2018-07-30 18:31:31 · 501 阅读 · 0 评论 -
Linux网络通信的基本概念
1、什么是计算机网络: 把分布在不同地理位置的计算机与专门的网络设备用通信线路互相连成一个规模大、功能强的系统,从而使众多计算机可以方便地互相传递信息、共享软件、硬件、数据信息等。简单来说,计算机网络就是由通信线路互相连接的许多自主工作的计算机构成的的集合,它是计算机技术和通信技术相结合的产物。2、OSI/RM结构与TCP/IP模型 网络协议是为网络数据交换而制定的规则、约定、标准...原创 2018-08-06 00:06:02 · 546 阅读 · 0 评论 -
Linux C基于UDP的网络编程
套接字(socket)socket是一种可以进行网络通信的内核对象,它有一个唯一的标识符,一般称它为socket描述符——sockfd,可类比于文件描述符fd,基于Linux下一切皆文件的概念,所以sockfd也可以用read/write/close操作。socket函数:创建socket对象int socket(int domain, int type, int protocol...原创 2018-08-06 20:41:24 · 9233 阅读 · 1 评论 -
Ubuntu下安装Sublime Text3 汉化以及支持中文输入(2019.7.22更新)
我个人其实不太适应Ubuntu自带的vi编辑器,相比之下我比较喜欢有多功能的Sublime。本文是我在Ubuntu下安装sublime以及汉化的过程:由于我的版本是Ubuntu,所以就按照官网上的apt的步骤:aptInstall the GPG key:wget -qO - https://download.sublimetext.com/sublimehq-pub...原创 2018-07-10 14:50:54 · 4948 阅读 · 0 评论