
Linux
文章平均质量分 71
华秋实
likeyockie@163.com
展开
-
linux futex浅析
Futex,Fast Userspace muTEXes,作为linux下的一种快速同步(互斥)机制,已经存在了很长一段时间了(since linux 2.5.7)。它有什么优势?又提供了怎样一些功能,本文就简单探讨一下。futex诞生之前在futex诞生之前,linux下的同步机制可以归为两类:用户态的同步机制 和 内核同步机制。 用户态的同步机制基本上就是利用原子指令实现的spinlock。最简单的实现就是使用一个整型数,0表示未上锁,1表示已上锁。trylock操作就利用原子指令尝试将0改为1转载 2020-05-28 11:18:50 · 1539 阅读 · 0 评论 -
【整理】什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?
首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。 web server(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PH原创 2016-07-26 23:05:29 · 1946 阅读 · 1 评论 -
【Linux函数】Signal ()函数详细介绍
1. 功能设置某一信号的对应动作2. 声明#include <signal.h>typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);3. 参数说明 第一个参数signum:指明了所要处理的信号类型,它可以取除了SIGKILL和SIGSTOP外的任何一种信号。 第二个参原创 2016-06-21 19:49:56 · 63977 阅读 · 14 评论 -
Glibc中std::qsort在多线程下出core原因分析及解决
1、问题:一个C实现的32位多线程服务在启动时core dump. 该服务运行了一年多,而此问题仅出现了一次,是一个比较难复现的问题。 出core的位置在C库的qsort函数,信号是signal 8(算术错). 2、定位:core的栈的结构如下:#0 0x4202a801 in qsort () from /lib/i686/libc.so.6#1 0x0804e74e in getFRes (d转载 2016-06-15 16:44:22 · 1197 阅读 · 0 评论 -
vim查找字符串-全词匹配、不区分大小写
vim中查找字符串的时候一般有3中需求:普通查找命令模式下,按’/’或’?’,然后输入要查找的字符,Enter。/和?的区别是,一个向前(下)找,一个向后(上)。全词匹配如果你输入 “/int”,你也可能找到 “print”。 要找到以 “int” 结尾的单词,可以用: /int\> “\>” 是一个特殊的记号,表示只匹配单词末尾。类似地,”\<” 只匹配单词的开头。一次,要匹配一个原创 2016-07-22 15:07:25 · 59673 阅读 · 0 评论 -
Linux gcc编译error:"collect2: ld returned 1 exit status"
在Linux环境下编一个工程,无论怎么编译总是出现错误,提示如下: bmeta_info.cpp:4280: undefined reference to `crypt’ collect2: ld returned 1 exit status网上查的资料表示: Undefined reference to 错误:这类错误是在连接过程中出现的,可能有两种原因∶一是使用者自己定义的函数或者全局变原创 2016-06-27 14:03:33 · 156435 阅读 · 2 评论 -
pthread_once,pthread_key_create,pthread_setspecific,pthread_getspecific
pthread_once_t once_control = PTHREAD_ONCE_INIT; int pthread_once(pthread_once_t *once_control, void (*init_routine)(void)); 这个api的主要用途是确保所有的线程传入同一个once_control时,init_routine只会被执行一次。后续线程再对同一个once_原创 2016-06-05 18:38:05 · 1211 阅读 · 0 评论 -
Google gflags基础与进阶
gflags是什么:gflags是google的一个开源的处理命令行参数的库,使用c++开发,具备python接口,可以替代getopt。 gflags使用起来比getopt方便,但是不支持参数的简写(例如getopt支持–list缩写成-l,gflags不支持)。如何安装使用gflags:安装:请访问地址https://code.google.com/p/gflags/,下载最新版的gflags转载 2016-06-07 22:17:51 · 1113 阅读 · 0 评论 -
【整理】getopt和getopt_long函数
函数声明:#include <unistd.h> int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt; #include <getopt.h> int getopt_long原创 2016-06-07 22:00:37 · 2274 阅读 · 1 评论 -
git clone出现SSL routines:SSL3_GET_SERVER_CERTIFICATE错误的2种解决办法
最近用git下载一个开源项目的时候,出现了这样的错误信息:SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing原创 2016-05-09 11:46:15 · 10145 阅读 · 1 评论 -
GDB 调试 C++ 程序 core dump
摘要gdb 的一些常用命令, 及在程序发生段错误后如何通过调试 core dump 迅速定位到出错位置.不罗列一大堆命令了, 只是把碰到的/用过的整理一下, 以后再使用到新的命令, 再补充. 有几篇总结的比较好的文章可以参考: 《LINUX C/C++ GDB调试(概述)上》、《LINUX C/C++ GDB调试(概述)下》、《手把手教你玩转GDB(二)——Breakpoint, Watchpoin转载 2016-07-20 22:39:01 · 19050 阅读 · 0 评论 -
Linux chmod命令详解
作用: 改变一个或多个文件的存取模式(mode)格式: chmod [options] mode files只能文件属主或特权用户才能使用该功能来改变文件存取模式。mode: 可以是数字形式或以who opcode permission形式表示。who是可选的,默认是a(所有用户)。只能选择一个opcode(操作码)。可指定多个mode,以逗号分开。 综上,包含options、wh转载 2016-08-05 21:31:34 · 5627 阅读 · 0 评论 -
CPU Cache分享
不能上传ppt,只好发图片格式:关于CPU Cache的分享原创 2018-08-29 11:46:40 · 478 阅读 · 0 评论 -
GDB(设置断点)
启动GDB后,首先就是要设置断点,程序中断后才能调试。在gdb中,断点通常有三种形式:断点(BreakPoint):在代码的指定位置中断,这个是我们用得最多的一种。设置断点的命令是break,它通常有如下方式:break 在进入指定函数时停住break 在指定行号停住。break +/-offset 在当前行号的前面或后面的offs转载 2018-01-25 21:09:21 · 17250 阅读 · 1 评论 -
2>&1使用
2>&1使用一 相关知识1)默认地,标准的输入为键盘,但是也可以来自文件或管道(pipe |)。2)默认地,标准的输出为终端(terminal),但是也可以重定向到文件,管道或后引号(backquotes `)。3) 默认地,标准的错误输出到终端,但是也可以重定向到文件。4)标准的输入,输出和错误输出分别表示为STDIN,STDOUT,STDERR,也可以用0,1,2来转载 2017-02-20 16:24:41 · 518 阅读 · 0 评论 -
网络编程:Reactor与Proactor的概念
1、标准定义两种I/O多路复用模式:Reactor和Proactor一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件转载 2017-01-03 17:24:23 · 432 阅读 · 0 评论 -
学习何时以及如何使用 POSIX AIO API
AIO 简介Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性,但是我们在 2.4 版本内核的补丁中也可以找到它。AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果。I/O 模型在深入介绍 AIO API 之前,让我们先来探索一下转载 2016-11-16 21:26:04 · 1018 阅读 · 0 评论 -
在Linux下判断系统当前是否开启了超线程
在判断当前是否开启了超线程之前,需要先判断另外几个数据:1,物理CPU个数:123[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniqphysical id : 0 physical id : 1转载 2016-11-11 11:33:23 · 10851 阅读 · 2 评论 -
Linux下cp目录下的带隐藏文件的子目录
何在Linux下拷贝一个目录呢?这好像是再简单不过的问题了。 比如要把/home/usera拷贝到/mnt/temp,首先想到的就是cp -R /home/usera/* /mnt/temp但是这样有一个问题,/home/usera下的隐藏文件都不会被拷贝,子目录下的隐藏文件倒是会的。那如何才是正确的方法呢?有人说用-a选项,有人说用find加管道。 其实没这么复杂,Google了之后,学了一招转载 2016-10-20 14:53:49 · 20381 阅读 · 0 评论 -
Linux下查看.so和可执行文件是否debug编译
如何判断一个.so是否是debug编译的?如果用此方法:用file来查看一个.so, 根据是否包含”not stripped”来判断该.so是否是debug编译的。然而stripped/not stripped并不是debug/release编译的判断标准. 对debug和release的.so运行file后可得出几乎相同的输出, 都是not stripped。所以此方法是不准确的。debug/re转载 2016-09-07 20:17:28 · 9247 阅读 · 0 评论 -
Linux 技巧:让进程在后台可靠运行的几种方法
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。一、nohup/setsid/&场景: 如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运转载 2016-08-23 21:02:38 · 2968 阅读 · 0 评论 -
【整理】服务器忽略SIGPIPE信号原因及方法
1.原因对一个对端已经关闭的socket调用两次write,第二次将会生成SIGPIPE信号, 该信号默认结束进程。具体的分析可以结合TCP关闭的”四次握手”。TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条。当对端调用close时, 虽然本意是关闭整个两条信道,但本端只是收到FIN包。 按照TCP协议的语义, 表示对端只是关闭了其所负责的那一条单工信道, 仍然可以转载 2016-08-10 21:03:33 · 4571 阅读 · 0 评论 -
xshell终端中文乱码完全解决方法
xshell(xshell5)以及其他终端中文乱码的原因无非有三种 (1)Linux系统的编码问题 (2)xshell终端的编码问题 (3)两端的语言编码不一致1、Linux系统的编码问题 (1) 执行locale命令查看系统语言 (2)设置系统环境变量LANG为en_US.UTF-8: export LANG=en_US.UTF-8 或者编辑文件:vi原创 2016-04-21 11:00:45 · 94079 阅读 · 0 评论 -
如何将Linux rm命令删除的文件放入垃圾箱
因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复。通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱,这样就能将误删的文件恢复,一起来学习下吧。 方法: 1. 在/home/username/ 目录下新建一个目录,命名为:.trash 2. 在/home/username/tools/目录下,新建一个shell文件,命名为: remove.s转载 2016-04-20 14:27:15 · 5674 阅读 · 3 评论 -
linux shell 的here document 用法 (cat << EOF)
什么是Here DocumentHere Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下cmd << delimiter Here Document Contentdelimiter它的作用就是将两个 delimiter 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数。比转载 2016-04-19 16:34:23 · 944 阅读 · 0 评论 -
gcc和g++的区别
我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++,或者说编译用 gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是更糊涂。误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:转载 2016-04-08 11:41:21 · 471 阅读 · 0 评论 -
在Vim中使用ctags
如何在Vim中使用ctags?之前在《把Vim打造成真正的IDE》系列里已经讲过大致的ctags在vim中的使用,这篇文章我们就详细的讲一下。首先要明白,ctags是什么? 官方的解释是: 产生标记文件以帮助在源文件中定位对象。其生成的标记文件tags中包括这些对象的列表: 用#define定义的宏 枚举型变量的值 函数的定义、原型和声明 名字空间(namespace)转载 2016-04-07 23:40:54 · 8807 阅读 · 0 评论 -
xshell中Ctrl+S锁定屏幕
xshell下使用vim的编辑一个文件,保存文件时习惯性的按Ctrl+S,结果按什么键都没有反应。原来Ctrl+S在Linux里,是锁定屏幕的快捷键。如果要解锁,按下Ctrl+Q就可以了。 Ctrl+S:锁定屏幕 Ctrl+Q:解锁原创 2016-04-07 14:38:32 · 13768 阅读 · 0 评论 -
例解 Linux 下 Make 命令
Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一。管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题。本文我们将用一些实例来讨论 make 命令背后的工作机制。Make 如何工作的对于不知道背后机理的人来说,make 命令像命令行参数一样接收目标。这些目标通常存放在以 “Makefile” 来命名的特殊文件中,同时文件也转载 2016-04-06 23:40:29 · 407 阅读 · 0 评论 -
vi/vim编辑器必知必会
一、我们为什么要学习vim编辑器?Linux的命令行界面下面有非常多的文本编辑器。比如经常听说的就有Emacs、pico、nano、joe与vim等。vim可以看做是vi的高级版。我们为什么一定要学习vim呢?有以下几个原因: (1)所有的Unix like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在。 (2)很多软件的编辑接口都会主动调用vi。 (3)vim具有程序编转载 2016-03-21 15:12:25 · 1828 阅读 · 0 评论 -
SecureCRT rz 上传文件失败问题
在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了。对于几百M到1G多的大文件要如下处理。单独用rz会有两个问题:上传中断、上传文件变化(md5不同),解决办法是上传是用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的勾选。转载 2016-03-30 12:01:30 · 4250 阅读 · 0 评论 -
换行符乱谈(文本文件vs二进制文件)
搜一些资料的时候偶然看到了这篇博文(http://blog.youkuaiyun.com/dbzhang800/article/details/6430280),觉得讲的挺好的,故收藏下~ 另外,文章的排版和颜色都弄的挺好的,让人看着很舒服,学习~~使用 C 语言的 fopen 打开文件时,可以指定的 mode 有 12 个,其中 6 个包含 "b"使用转载 2013-01-09 21:59:53 · 2212 阅读 · 0 评论 -
Makefile之wildcard
1、wildcard: 扩展通配符2、notdir: 去除路径3、patsubst:替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件建立一个简单的Makefile转载 2012-10-22 22:59:38 · 916 阅读 · 0 评论 -
makefile中符号含义
3个通配符:"*","?","..."支持特别符号:"%":匹配零或多个字符,如 %.c 表示所有以 .c 结尾的文件$ 表示执行一个Makefile函数$@表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。$%仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o转载 2012-10-29 21:15:28 · 6820 阅读 · 0 评论 -
命令行svn commit时注释实现换行
svn ci -m $'11111\n222222'重点是单引号前$符原创 2016-04-12 16:58:15 · 7943 阅读 · 2 评论 -
(好)经过跳板机rz大文件失败
问题描述:SecureCRT可以跟rz、sz命令结合方便的上下传文件,但经过跳板机之后直接rz、sz一个稍大的文件会在上传一部分后退出并显示一堆乱码,这是因为这中间有控制字符的原因。 *解决办法: 加参数-e忽略控制字符:rz -e和sz -e【转自:http://my.oschina.net/panzhc/blog/201594】转载 2016-04-19 16:21:30 · 5754 阅读 · 0 评论 -
Linux的查找命令
find 在指定目录下搜索文件,并可以执行指定的操作locate 也是按名字查找文件,但是是从一个数据库/var/lib/locatedb中搜索,速度快得多whereis 只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。which 查找某个系统命令是否存在,并显示给定命令的绝对路径,环境变量PATH中保原创 2016-04-18 20:11:44 · 410 阅读 · 0 评论 -
sed命令详解
概述sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。使用语法sed命令的使用规则是这样的转载 2016-04-11 22:21:03 · 382 阅读 · 0 评论 -
linux之sed用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般转载 2016-04-11 22:11:44 · 348 阅读 · 0 评论 -
linux grep命令
1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。2.格式grep [options]3.主要参数[options]主要参数:-c:只输出匹配行的计数。-I:不区分大 小写(转载 2016-04-11 21:54:13 · 364 阅读 · 0 评论