Linux开发
文章平均质量分 88
贾晓凯2008
这个作者很懒,什么都没留下…
展开
-
重装VmWare后centos 网络的设置
win10自动升级后vmware不能打开,重装vmware后,发现网关变了1. vmware网关查看方法:“编辑”-->"虚拟网络编辑器"-->选择“NAT模式”-->"NAT"设置2. 修改centos的静态ip :vi /etc/sysconfig/network-scripts/ifcfg-eth0然后win10能ping通centos了,但是centos里...原创 2019-10-17 15:18:18 · 245 阅读 · 0 评论 -
正则表达式
grep [-acniv] '字符串' filename一. grep的参数-a 文本方式搜索-c 找到的次数-n 显示行号 例: grep -n ' the' filename-i 忽略大小写 例: grep -in 'the' filename-v 反选 例: grep -vn ...原创 2018-06-26 10:13:25 · 343 阅读 · 0 评论 -
一个不错的shell 脚本教程
一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂!建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。 如同其他语言一样...转载 2018-06-25 18:16:17 · 778 阅读 · 0 评论 -
Makefile 速成
一. Makefile/makefile规则及举例二. make的工作方式三、makefile中的常用自动化变量与通配符四、makefile自动生成依赖性关系五、 调用命令 1. 显示命令 2. 命令出错 3. 命令执行六、 变量转载 2016-11-25 17:35:27 · 237 阅读 · 0 评论 -
Linux网络编程“惊群”问题总结
1、前言 我从事Linux系统下网络开发将近4年了,经常还是遇到一些问题,只是知其然而不知其所以然,有时候和其他人交流,搞得非常尴尬。如今计算机都是多核了,网络编程框架也逐步丰富多了,我所知道的有多进程、多线程、异步事件驱动常用的三种模型。最经典的模型就是Nginx中所用的Master-Worker多进程异步驱动模型。今天和大家一起讨论一下网络开发中遇到的“惊群”现象。之前只是听说过这个现象转载 2017-08-21 16:05:15 · 308 阅读 · 0 评论 -
Linux/Windows下 C/C++开发的差异zz
1. 平台差异简介Windows 和Unix是当前两大主流操作系统平台,基于C/C++的开发人员经常会面临这两个平台之间的移植的问题。Unix作为一个开发式的系统,其下有出现了很 多个分支,包括Sun的Solaris、IBM的AIX、HP Unix、SCO Unix、Free BSD、苹果的MAC OS以及开源的Linux等。对于这些Unix的分支操作系统,其实现又有很大的差别,因此开发人转载 2017-08-02 11:49:33 · 827 阅读 · 0 评论 -
进程栈大小 与 线程栈大小
结论: 1. 进程的栈大小是在进程执行的时刻才能指定的,即不是在编译的时刻决定,也不是链接的时刻决定,否则就不会有实验5的结果 2. 进程的栈大小是随机确定的至少比线程的栈要大,但是不到线程栈大小的2倍 3. 线程栈的大小是固定的,也就是ulimit -a显示的值实验:我在FC3,gcc3.4.2环境下进行该实验,证明线程的栈确实有固定大小,也就是ulimit -a显示的那转载 2016-12-19 11:41:22 · 1026 阅读 · 0 评论 -
Linux线程锁详解pthread_mutexattr_t
在Posix Thread中定义有一套专门用于线程同步的mutex函数。 1. 创建和销毁 有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; 在LinuxThreads实现中转载 2016-05-10 10:25:33 · 6199 阅读 · 0 评论 -
pthread_rwlock_t基本用法
目录(?)[-]使用读写锁pthread_rwlock_init 语法pthread_rwlock_init 返回值获取读写锁中的读锁pthread_rwlock_rdlock 语法pthread_rwlock_rdlock 返回值读取非阻塞读写锁中的锁pthread_rwlock_tryrdlock 语法pthread_rwlock_tryrdlock 返转载 2016-05-10 11:08:21 · 1428 阅读 · 0 评论 -
Linux—shell中$(( ))、$( )、``与${ }的区别
一. $( )与` `(反引号) 命令替换 $ echo today is $(date "+%Y-%m-%d") 多层嵌套 cmd3 $(cmd2 $(cmd1)) cmd3 `cmd2 \`cmd1\``二. ${ }1. 变量替换...转载 2018-06-30 21:36:46 · 455 阅读 · 0 评论 -
shell脚本的基础入门
一.【shebang】 二.【变量】 三.【逻辑运算】 四. 数值、字符串、文件测试、组合测试五.【read命令】 【前言】 脚本文件需要拥有执行权限,不然它只是一个普通文件。一.【shebang】首先,创建文件:vim filename,在文件的开头写一个命令:这一行命令有一个统称,叫做”! shebang“ : 由上可知,”shebang“写在U...转载 2018-06-27 18:08:50 · 338 阅读 · 0 评论 -
linux使用windows中编辑的文件,格式问题
参考:https://blog.csdn.net/yongan1006/article/details/8142527运行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是文件格式的问题,也就是linux和windows之间的不完全兼容。。。具体细节不管,如果验证:vim test.sh:set ff?如果出现fileforma=dos那么就基本可以确定是这个...转载 2018-09-10 18:24:54 · 407 阅读 · 0 评论 -
syntax error near unexpected token `newline'脚本无法执行
问题描述执行run.sh脚本是报错,报错信息如下:/data/app/information-provider: No such file or directory: command not found./run.sh: line 4: syntax error near unexpected token `newline''/run.sh: line 4: `case "$1"...转载 2018-09-10 18:01:23 · 15588 阅读 · 0 评论 -
C/C++ makefile自动生成工具(comake2,autotools,linux),希望能为开源做点微薄的贡献!
一. 手动写了一个工具类,生成现成的c或者cpp框架。 git路径:https://github.com/chuanshanjia/ccpp/blob/master/frame.sh git说明:https://github.com/chuanshanjia/ccpp/blob/master/README.md #makefile自动生成工具 f...转载 2018-07-13 23:11:45 · 1324 阅读 · 0 评论 -
vim使用技巧
命令模式应该是常态在vim中,保存:w,需要在命令模式下进行。Esc切换到命令模式。只要不输入文字,就切换到命令模式,命令模式是常态!HJKL光标上下左右移动vim的大部分快捷键在命令模式下完成,而且HJKL也是在命令模式下才生效的。如果你在插入模式下工作,不用HJKL。让你的操作可重复假设如下文本one two three four five six 我希望改成 "one","t...转载 2018-07-06 20:42:56 · 165 阅读 · 0 评论 -
Unix NetWork Programming——环境搭建(解决unp.h等源码编译问题)
下面开始用简单但典型的客户端和服务器端程序说明如何进行网络编程。这一小节讲的是客户端,一个用来连接并读取服务器发送来的时间的客户端。这里涉及到了编写代码,因此要搭建unix网络编程环境 unix系统我没安装,系统不易获得而且也没必要安装unix。用linux是最佳选择。再者我本来就是ubuntu系统,所以就在ubuntu下搭建环境了。1,安装编译器,为了齐全还是安装一下buil...转载 2018-07-24 15:37:17 · 365 阅读 · 0 评论 -
linux里mnt下无hgfs文件
安装VM tools第一步:用VMware安装Ubuntu 12.04详细过程图解http://wenku.baidu.com/view/734ae36148d7c1c708a14530.html这个很简单,看下教程即可。第二部:VM与主机共享文件夹的设置(VM7.1以上版本可以直接拖拽):为了更好的解决虚拟机与主机的共享问题,VMware公司有一个VMWare-tools,来...转载 2018-07-17 17:57:55 · 1095 阅读 · 0 评论 -
shell 流程控制
【前言】 之前写过一篇文章叫做 shell脚本的基础入门,既然已经入门了,那今天就来说说shell编程的进阶。 我们知道,shell脚本可以用来帮助我们更快的提高工作效率,而在工作中,很多时候的工作的简单而复杂的。什么叫做简单而复杂?简单是说他的操作性很简单,只是一行命令或者两行命令搞定,而复杂是说可能由于工作的需要性,有时候这一条或者两行命令需要我们重复执行十遍百遍,如果说人工去一遍一遍的执...转载 2018-06-27 18:11:53 · 654 阅读 · 0 评论 -
libc与glibc的概念和区别
glibc和libc都是Linux下的C函数库,libc是Linux下的ANSI C的函数库;glibc是Linux下的GUN C的函数库;ANSI C和GNU C有什么区别呢?ANSIC是基本的C语言函数库,包含了C语言最基本的库函数。这个库可以根据 头文件划分为 15 个部分,其中包括::包含用来测试某个特征字符的函数的函数原型,以及用来转换大小写字母的函数原型;转载 2016-03-31 20:34:55 · 1640 阅读 · 0 评论 -
linux系统调用和库函数调用的区别
Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。可以参考《Linux程序设计》(英文原版为《Beginning Linux Programming》,作者是Neil Matthew和Richard Stones)第三章: Working with files。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底转载 2016-03-29 18:11:05 · 254 阅读 · 0 评论 -
linux下的C语言开发(管道通信)
Linux系统本身为进程间通信提供了很多的方式,比如说管道、共享内存、socket通信等。管道的使用十分简单,在创建了匿名管道之后,我们只需要从一个管道发送数据,再从另外一个管道接受数据即可。[cpp] view plaincopy#include #include #include #include转载 2015-10-15 14:38:17 · 333 阅读 · 0 评论 -
linux下的C语言开发(动态库) 转载加原创
动态链接库不是linux独有的特性,在windows下面也存在这样的特性。一般来说,windows下面的动态连接库是以*.dll作为结尾的,而linux下面的动态连接库是以*.so结尾的。和静态链接库相比,动态连接库可以共享内存资源,这样可以减少内存消耗。另外,动态连接是需要经过操作系统加载器的帮助才能被普通执行文件发现的,所以动态连接库可以减少链接的次数。有了这个特点,我们就不难发现为什么很多软转载 2015-10-15 14:32:00 · 393 阅读 · 0 评论 -
linux下的C语言开发(makefile编写)
对于程序设计员来说,makefile是我们绕不过去的一个坎。可能对于习惯Visual C++的用户来说,是否会编写makefile无所谓。毕竟工具本身已经帮我们做好了全部的编译流程。但是在Linux上面,一切变得不一样了,没有人会为你做这一切。编代码要靠你,测试要靠你,最后自动化编译设计也要靠你自己。想想看,如果你下载了一个开源软件,却因为自动化编译失败,那将会在很大程度上打击你学习代码的自信心了转载 2015-10-15 14:24:01 · 284 阅读 · 0 评论 -
线程常用函数 互斥 同步 ------笔记
本章内容:一线程的基本函数:二.线程同步与互斥一线程的基本函数:1.intpthread_attr_init(pthread_attr_t* attr); 线程属性初始化2.intpthread_attr_destory(pthread_addr_t* attr); 线程属性注销3.Intpthread_attr_setdetachstat(const pthread_att原创 2015-10-29 16:44:10 · 286 阅读 · 0 评论 -
Linux线程属性总结
线程属性标识符:pthread_attr_t 包含在 pthread.h 头文件中。[c] view plaincopy//线程属性结构如下: typedef struct { int etachstate; //线程的分离状态 int转载 2015-10-29 16:37:48 · 255 阅读 · 0 评论 -
Linux 线程属性函数总结
1、初始化一个线程对象的属性int pthread_attr_init(pthread_attr_t *attr); 返回值:若是成功返回0,否则返回错误的编号 形 参: attr 指向一个线程属性的指针 说 明:Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先转载 2015-10-29 16:36:17 · 214 阅读 · 0 评论 -
linux下的C语言开发(线程等待)
和多进程一样,多线程也有自己的等待函数。这个等待函数就是pthread_join函数。那么这个函数有什么用呢?我们其实可以用它来等待线程运行结束。[cpp] view plaincopy#include #include #include #include void func(void* args)转载 2015-10-15 14:40:16 · 388 阅读 · 0 评论 -
linux下的C语言开发(多线程编程)
多线程和多进程还是有很多区别的。其中之一就是,多进程是linux内核本身所支持的,而多线程则需要相应的动态库进行支持。对于进程而言,数据之间都是相互隔离的,而多线程则不同,不同的线程除了堆栈空间之外所有的数据都是共享的。说了这么多,我们还是自己编写一个多线程程序看看结果究竟是怎么样的。[cpp] view plaincopy#include转载 2015-10-15 14:39:25 · 389 阅读 · 0 评论 -
linux下的C语言开发(定时器)
定时器是我们需要经常处理的一种资源。那linux下面的定时器又是怎么一回事呢?其实,在linux里面有一种进程中信息传递的方法,那就是信号。这里的定时器就相当于系统每隔一段时间给进程发一个定时信号,我们所要做的就是定义一个信号处理函数。[cpp] view plaincopy#include #include #include转载 2015-10-15 14:33:41 · 362 阅读 · 0 评论 -
进程的查看、创建、会话、守护进程、结束
环境变量操作函数char*getenv(const char* name);获取环境变量值intputenv(cahr* str);形式为name=value的字符串,将其放到环境表中,如果name已经存在,则先删除其原来的定义intsetenv(name,value,rewrite);略intunsetenv(name);删除name的定义 setjmp 功能:设置非局原创 2015-10-29 17:27:37 · 1882 阅读 · 0 评论 -
linux下的C语言开发(线程互斥)
对于编写多线程的朋友来说,线程互斥是少不了的。在linux下面,编写多线程常用的工具其实是pthread_mutex_t。本质上来说,它和Windows下面的mutex其实是一样的,差别几乎是没有。希望对线程互斥进行详细了解的朋友可以看这里。[cpp] view plaincopy#include #include #incl转载 2015-10-15 14:41:00 · 279 阅读 · 0 评论 -
linux下的C语言开发(进程创建及等待)
在Linux下面,创建进程是一件十分有意思的事情。我们都知道,进程是操作系统下面享有资源的基本单位。那么,在Linux下面应该怎么创建进程呢?其实非常简单,一个fork函数就可以搞定了。但是,我们需要清楚的是子进程与父进程之间除了代码是共享的之外,堆栈数据和全局数据均是独立的。[cpp] view plaincopy#include转载 2015-10-15 14:36:11 · 471 阅读 · 0 评论 -
Linux 多进程和多线程的优缺点
在Linux下编程多用多进程编程少用多线程编程。 IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linu转载 2016-03-29 18:08:46 · 3293 阅读 · 0 评论 -
linux下多进程、多线程编程
linux下进程 (一) 理解Linux下进程的结构 Linux下一个进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段”,其实学过汇编语言的人一定知道,一般的CPU象I386,都有上述三种段寄存器,以方便操作系统的运行。“代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。 堆栈段存放的就转载 2016-03-29 18:10:09 · 500 阅读 · 0 评论 -
Linux makefile 教程 非常详细,且易懂
最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。 后记,看完发现这篇文章和《Linux环境下的C编程指南》的makefile一章所讲述的惊人的相似,只是这篇文章从一个实例切入,在有些地方比转载 2015-12-18 17:25:15 · 467 阅读 · 0 评论 -
标准C的IO
Char* fgets(char*s,int size,FILE* stream);Int printf(constchar* format,...);Int fprintf(FILE*stream, const char* format,...);Size_t fread(void*ptr,size_t size,size_t nmemb,FILE* stream );Size_原创 2015-12-01 16:51:21 · 605 阅读 · 0 评论 -
Linux信号量 sem_t简介
函数介绍#include信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函数sem_init()用来初始化一个信号量。它的原型为:int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value));sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前转载 2015-12-30 14:18:08 · 289 阅读 · 0 评论 -
Linux IO模式及 select、poll、epoll详解
http://segmentfault.com/a/1190000003063859?utm_source=Weibo&utm_medium=shareLink&utm_campaign=socialShare本文是对众多博客的学习和总结,可能存在理解错误。请带着怀疑的眼光,同时如果有错误希望能指出。同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同转载 2015-11-27 09:31:12 · 194 阅读 · 0 评论 -
linux下的C语言开发(信号处理)
信号处理是linux程序的一个特色。用信号处理来模拟操作系统的中断功能,对于我们这些系统程序员来说是最好的一个选择了。要想使用信号处理功能,你要做的就是填写一个信号处理函数即可。一旦进程有待处理的信号处理,那么进程就会立即进行处理。[cpp] view plaincopy#include #include #include转载 2015-10-15 14:37:18 · 381 阅读 · 0 评论 -
linux下的C语言开发(自动编译工具)
在Linux下面,编写makefile是一件辛苦的事情。因此,为了减轻程序员编写makefile的负担,人们发明了autoconf和automake这两个工具,可以很好地帮我们解决这个问题。 我们可以通过一个简单的示例来说明如何使用配置工具。(1)首先,编写源文件hello.c。[cpp] view plaincopy#转载 2015-10-15 14:34:45 · 394 阅读 · 0 评论