
Linux
eastlhu
这个作者很懒,什么都没留下…
展开
-
解决找不到/usr/bin/ld: cannot find -lXX的问题
Ubuntu下遇到ld: cannot find -lXX之类的问题,提示找不到相关库文件1、如果能上网,最不用废脑子的办法:$ sudo apt-get install apt-file$ apt-file update$ apt-file search libXX.soapt-file 将列出所有包含libXX.so文件的转载 2017-11-14 17:52:29 · 21536 阅读 · 0 评论 -
CentOS 7 编译安装Redis
在CentOS(Linux)下编译安装Redis(V2.8.7)之后,总结的注意事项如下: 下载安装Redis: $ wget http://download.redis.io/releases/redis-2.8.7.tar.gz$ tar xzf redis-2.8.7.tar.gz$ cd redis-2.8.7$ makeTIPS: 可先到官网下载Redis文件,同时可以原创 2015-01-15 20:53:46 · 1734 阅读 · 0 评论 -
进程的同步与通信,进程与线程同步的区别,进程与线程通信的区别
进程同步与互斥的区别?进程的同步方式有哪些?进程的通信方式有哪些?进程同步与通信的区别是什么?线程的同步/通信与进程的同步/通信有区别吗?在好多教材上(包括国内与国外的)也没有明确这些概念,现在对每个问题还没有准确的答案,下面将自己的理解记下来,以后再补充。参考资料:《操作系统教程》 孙钟秀主编 费翔林 骆斌 谢立参编 高等教育出版社进程互斥、同步、通信的概念进程互斥、同步转载 2014-03-05 00:48:05 · 1055 阅读 · 0 评论 -
Linux下的进程间通信-详解
详细的讲述进程间通信在这里绝对是不可能的事情,而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步,所以在这一节的开头首先向大家推荐著 名作者Richard Stevens的著名作品:《Advanced Programming in the UNIX Environment》,它的中文译本《UNIX环境高级编程》已有机械工业出版社出版,原文精彩,译文同样地道,如果你的确对在Linux下编原创 2014-03-03 20:10:48 · 632 阅读 · 0 评论 -
Linux中进程间通信方式
序linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket转载 2014-03-05 01:01:28 · 666 阅读 · 0 评论 -
linux 进程同步机制
为了能够有效的控制多个进程之间的沟通过程,保证沟通过程的有序和和谐,OS必须提供一定的同步机制保证进程之间不会自说自话而是有效的协同工作。比如在共享内存的通信方式中,两个或者多个进程都要对共享的内存进行数据写入,那么怎么才能保证一个进程在写入的过程中不被其它的进程打断,保证数据的完整性呢?又怎么保证读取进程在读取数据的过程中数据不会变动,保证读取出的数据是完整有效的呢?常用的同步方式有: 互斥转载 2014-03-05 01:11:27 · 879 阅读 · 0 评论 -
Linux多线程通信
线程通信 线程互斥 互斥意味着“排它”,即两个线程不能同时进入被互斥保护的代码。Linux下可以通过pthread_mutex_t 定义互斥体机制完成多线程的互斥操作,该机制的作用是对某个需要互斥的部分,在进入时先得到互斥体,如果没有得到互斥体,表明互斥部分被其它线程拥有,此时欲获取互斥体的线程阻塞,直到拥有该互斥体的线程完成互斥部分的操作为止。 下面的代码实现了对共转载 2014-03-05 01:14:50 · 647 阅读 · 0 评论 -
Linux中多线程同步
线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。1)互斥锁(mutex) 通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutex_转载 2014-03-05 01:19:53 · 590 阅读 · 0 评论 -
Linux多线程同步机制
一、互斥锁尽管在Posix Thread中同样可以使用IPC的信号量机制来实现互斥锁mutex功能,但显然semphore的功能过于强大了,在Posix Thread中定义了另外一套专门用于线程同步的mutex函数。1. 创建和销毁 有两种方法创建互斥锁,静态方式和动态方式。 POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如转载 2014-03-05 01:20:32 · 600 阅读 · 0 评论 -
pthread_join函数及linux线程
pthread_join使一个线程等待另一个线程结束。代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self(转载 2014-03-05 14:19:00 · 723 阅读 · 0 评论 -
关于fork和缓冲区的问题
题目:请问下面的程序一共输出多少个“-”? #include #include #include int main(void) { int i; for(i=0; i<2; i++){ fork(); printf("-");转载 2014-03-05 13:13:21 · 1535 阅读 · 0 评论 -
Linux下的多线程编程
1 线程创建与取消 1.1 线程创建1.1.1 线程与进程相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。 线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相转载 2014-03-05 01:21:32 · 666 阅读 · 0 评论 -
同一进程中的线程究竟共享哪些资源
线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括: 1.线程ID 每个线程都有自己的线程ID,这个ID在本进程中是唯一的。原创 2014-03-23 14:00:46 · 1245 阅读 · 0 评论 -
Linux下Fork与Exec使用
一、引言 对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又为程序员提供了一个简洁明了的多进程方法。与DOS和早期的Windows不同,Unix/Linu转载 2014-03-05 15:33:19 · 775 阅读 · 0 评论 -
xxx is not in the sudoers file.This incident will be reported.的解决方法
1.切换到root用户下,怎么切换就不用说了吧,不会的自己百度去.2.添加sudo文件的写权限,命令是:chmod u+w /etc/sudoers3.编辑sudoers文件vi /etc/sudoers找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)ps:这里说下你可以sudoers添转载 2015-12-26 11:07:16 · 574 阅读 · 0 评论 -
CentOS 7 Nginx 控制脚本
一、RHEL 7的新的特性方法: 1、准备活动 传送门:http://my.oschina.net/liucao/blog/4704582、干货: 相信看了准备活动,基本上就会了,这个比起下面那个方法实在是简单多了直接上指令:?12345678910111213141516转载 2016-04-07 17:01:32 · 404 阅读 · 0 评论 -
CentOS 7 安装Nginx-1.9.x
一、准备工作: 1、安装必备工具: ?123$ yum -y installgcc gcc-c++ autoconf automake $ yum -y installzlib zlib-devel openssl openssl-devel pcre-devel说明:pcre:转载 2016-04-07 15:55:47 · 1508 阅读 · 0 评论 -
"error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory原因一般有两个, 一个是操作系统里确实没有包含该共转载 2017-09-22 18:56:46 · 383 阅读 · 0 评论 -
CentOS下yum安装FFmpeg
一、yum安装FFmpeg1. 最偷懒的方式就是yum安装了,自动解决依赖。不过CentOS系统默认无FFmpeg源,企业版 Linux 附加软件包EPEL源也不包含,需要手动添加yum源配置/etc/yum.repos.d/dag.repo: [dag]name=Dag RPM Repository for Red Hat Enter转载 2017-07-11 11:28:36 · 646 阅读 · 0 评论 -
centos 7.3 安装配置python3.6.1
centos 7.3 安装配置python3.6.11.先安装一些我遇到的依赖问题(如果有依赖问题按提示安装):yum install xz gcc zlib zlib-devel2.官网下载源码包地址:https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz3.解压文件xz -d Python-3.6.转载 2017-07-10 17:43:26 · 2786 阅读 · 1 评论 -
CentOS 7中firewall防火墙详解和配置以及切换为iptables防火墙
官方文档介绍地址:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html#sec-Introduction_to_firewalld1一、firewall介绍CentOS 7中防火墙是一个非常的强转载 2017-02-10 10:45:33 · 865 阅读 · 0 评论 -
CentOS 7 的163源
网上找了很久都找不到centos 7 的163源,大多只有6的配置。写了一个7能用的。注意下版本,换成自己的版本吧[base]name=CentOS-$releasever - Base - 163.com#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=osbaseurl=原创 2015-04-20 00:21:26 · 1729 阅读 · 0 评论 -
CentOS7 安装samba
samba是个文件共享服务器。在linux和windows之间很好用,当然有更好的是NFS。这里对自己在CentOS7上安装samba的过程做一个记录。因为发现网上的都很乱,自己踩过坑以后,记录下,以便以后不再踩了。当然,你也可以去看《鸟哥的linux私房菜-服务器搭建篇》,上面都介绍的很好。1、关闭防火墙。 CentOS 7 是自带的firewall,CentOS 6 好像原创 2015-01-15 17:03:04 · 1257 阅读 · 0 评论 -
gdb 跟踪调试命令整理
内容源自于陈浩优快云博客的用GDB调试程序一系列文章用GDB调试程序(一)用GDB调试程序(二)用GDB调试程序(三)用GDB调试程序(四)用GDB调试程序(五)用GDB调试程序(六)用GDB调试程序(七) GDB 调试要进行调试程序首先要生成一个含有调试信息的执行程序命令如下:gcc(g++) -g -o 文件名 源文件.c(源文件.cpp)gcc(g+转载 2016-08-18 16:05:57 · 696 阅读 · 0 评论 -
Makefile 使用总结
Makefile 使用总结1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作转载 2016-08-04 11:18:55 · 627 阅读 · 0 评论 -
sendfile详解
在apache,nginx,lighttpd等web服务器当中,都有一项sendfile相关的配置,在一些网上的资料都有谈到sendfile会提升文件传输性能,那sendfile到底是什么呢?它的原理又是如何呢?在传统的文件传输里面(read/write方式),在实现上其实是比较复杂的,需要经过多次上下文的切换,我们看一下如下两行代码:read(file, tmp_buf, l转载 2016-06-21 09:37:58 · 2800 阅读 · 2 评论 -
CentOS 7编译安装Nginx1.9.0
原文:https://typecodes.com/web/centos7compilenginx.html遇到的问题:在make的时候,遇到如下问题:make[2]: 进入目录“/home/eastlhu/soft/nginx-1.9.15/pcre-8.38”CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /home/e转载 2016-05-23 20:38:51 · 3662 阅读 · 1 评论 -
gcc 编译粗略介绍 -l参数和-L参数
-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-lte转载 2016-05-15 01:43:56 · 1214 阅读 · 0 评论 -
linux下各种解压,压缩命令
大致总结了一下linux下各种格式的压缩包的压缩、解压方法。但是部分方法我没有用到,也就不全,希望大家帮我补充,我将随时修改完善,谢谢! .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— .gz转载 2016-04-08 16:14:05 · 463 阅读 · 0 评论 -
linux僵尸进程产生的原因以及如何避免产生僵尸进程(waitpid应对多进程的情况)
给进程设置僵尸状态的目的是维护子进程的信息,以便父进程在以后某个时间获取。这些信息包括子进程的进程ID、终止状态以及资源利用信息(CPU时间,内存使用量等等)。如果一个进程终止,而该进程有子进程处于僵尸状态,那么它的所有僵尸子进程的父进程ID将被重置为1(init进程)。继承这些子进程的init进程将清理它们(init进程将wait它们,从而去除僵尸状态)。 但通常情况下,我们是转载 2014-03-05 21:53:40 · 1443 阅读 · 1 评论 -
Linux线程属性总结
线程属性标识符:pthread_attr_t 包含在 pthread.h 头文件中。 //线程属性结构如下: typedef struct { int etachstate; //线程的分离状态 int schedpolicy; /转载 2014-03-21 15:04:23 · 662 阅读 · 0 评论 -
C++堆、栈、自由存储区、全局/静态存储区和常量存储区
一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量转载 2013-10-24 23:04:15 · 658 阅读 · 0 评论 -
C/C++ 数据范围
速查表:char -128 ~ +127 (1 Byte) short -32767 ~ + 32768 (2 Bytes) unsigned short 0 ~ 65536 (2 Bytes) int -2147483648 ~ +2147483647 (4 Bytes) unsigned int 0 ~ 4294967295 (4 Bytes) long == int原创 2013-09-20 16:45:16 · 893 阅读 · 0 评论 -
Ubuntu 创建启动器
首先我们要了解,Ubuntu 的 Dash 里所有程序都是在 /usr/share/applications 中的,所以我们的思路很简单——建一个类似于“快捷方式”一样的东西扔进去就好了。所以第一步自然是打开终端,输入sudo gedit eclipse.desktop#创建一个eclipse.desktop文件接着,在打开的 gedit 里我们编辑这个 desktop原创 2013-07-12 16:48:54 · 956 阅读 · 0 评论 -
C和指针
指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,原创 2013-09-10 23:48:48 · 826 阅读 · 0 评论 -
九大排序算法再总结
本文首先介绍了基于比较模型的排序算法,即最坏复杂度都在Ω(nlgn)的排序算法,接着介绍了一些线性时间排序算法,这些排序算法虽然都在线性时间,但是都是在对输入数组有一定的约束的前提下才行。这篇文章参看了《算法导论》第2、3、4、6、7、8章而总结。算法的由来:9世纪波斯数学家提出的:“al-Khowarizmi”排序的定义:输入:n个数:a1,a2,原创 2013-09-09 22:49:43 · 1099 阅读 · 0 评论 -
ANSI编码对比表
目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。 因为1位二进制数可以表示(21=)2种状原创 2013-09-08 11:36:48 · 1314 阅读 · 0 评论 -
基于VMware的Linux虚拟机硬盘空间扩大
随着Linux虚拟机的不断使用,在VMware中经常遇到 预先装好的 linux 虚拟机的硬盘空间过小 的问题,造成很多软件不能安装, 而重新装一个,又挺麻烦。于是,上网搜了下关于 vmware 硬盘扩容的方法。总结如下: 1、挂载点必须是一个目录。 2、一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。原创 2013-08-15 08:51:04 · 713 阅读 · 0 评论 -
ffplay的音视频同步分析
在ffplay里的视频图像更新是在一个timer里面更新的,当有timer事件时就会调用video_refresh_timer()函数,而在这个函数里面会调用compute_frame_delay()计算下一帧图像显示的时间video_refresh_timer() /* launch timer for next picture */ schedule_refresh(i原创 2013-07-20 09:14:39 · 1071 阅读 · 0 评论 -
FFMPEG-数据结构(AVCodecContext,AVStream,AVFormatContext)
AVCodecContext 这是一个描述编解码器上下文的数据结构,包含了众多编解码器需要的参数信息 如果是单纯使用libavcodec,这部分信息需要调用者进行初始化;如果是使用整个FFMPEG库,这部分信息在调用 av_open_input_file和av_find_stream_info的过程中根据文件的头信息及媒体流内的头部信息完成初始化。其中几个主要 域的释义如下:原创 2013-07-20 09:00:18 · 1984 阅读 · 0 评论