linux
文章平均质量分 69
tsbirdman163
天空没有翅膀的痕迹而我已飞过
展开
-
APUE之实际用户ID、有效用户ID和保存设置用户ID
每一个进程其实对应了6个以上的ID,它们分别是实际用户ID,实际组ID有效用户ID,有效组ID,附加组ID保存设置用户ID,保存设置组ID 实际用户ID,就是当前执行这个进程的ID,比如我现在是andrew用户,那么我执行main程序,那么这个main的实际用户ID就是andrew,实际组ID其实和实际用户ID类似。 有效用户ID,这个就是比较关转载 2014-09-11 14:56:42 · 610 阅读 · 0 评论 -
awk 使用方法
转载自:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本:转载 2015-02-01 20:05:05 · 421 阅读 · 0 评论 -
fopen中r+和w+的区别
fopen中r+和w+的区别 2010-12-23 11:30:29| 分类: C函数 | 标签:fopen中r+和w+的区别 |举报|字号 订阅r+: Open for reading and writing. The stream is positioned at the beginning of the file.w+:Open fo转载 2014-12-25 11:20:12 · 17584 阅读 · 3 评论 -
linux 下c++线程池的简单实现(在老外代码上添加注释)
作为一个c++菜鸟,研究半天这个代码的实现原理,发现好多语法不太熟悉,因此加了一大堆注释,仅供参考。该段代码主要通过继承workthread类来实现自己的线程代码,通过thread_pool类来管理线程池,线程池不能够实现动态改变线程数目,存在一定局限性。目前可能还有缺陷,毕竟c++来封装这个东西,资源释放什么的必须想清楚,比如vector存储了基类指针实现多态,那么如何释放对象仍需要考虑,后续我原创 2014-12-11 11:55:43 · 1325 阅读 · 0 评论 -
MTU与MSS之间区别和联系
mtu是网络传输最大报文包。 mss是网络传输数据最大值。 mss加包头数据就等于mtu. 简单说拿TCP包做例子。 报文传输1400字节的数据的话,那么mss就是1400,再加上20字节IP包头,20字节tcp包头,那么mtu就是1400+20+20. 当然传输的时候其他的协议还要加些包头在前面,总之mtu就是总的最后发出去的报文大小。mss就是你需要发出去的数据大小。1.MSS: Maxitu转载 2014-12-26 15:45:15 · 5597 阅读 · 0 评论 -
sed 命令简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 sed使用参数转载 2015-02-01 21:02:53 · 506 阅读 · 0 评论 -
getopt() 函数使用方法
getopt被用来解析命令行选项参数。#include extern char *optarg; //选项的参数指针 extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。 extern int opterr, //当opterr=0时,getopt不向stderr转载 2014-12-31 21:03:53 · 597 阅读 · 0 评论 -
tcpdump 命令详解
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例默认启动tc转载 2015-01-24 10:10:22 · 644 阅读 · 0 评论 -
实际用户ID,有效用户ID和设置用户ID
实际用户ID,有效用户ID和设置用户ID 看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解。今天好好区分了一下这几个概念并总结如下。说白了这几个UID引出都是为了系统的权限管理。 下面分别用RUID, EUID,SUID来表示实际用户ID,有效用户ID,设置用户ID。另外用户ID是个整型数,为了说明方便真接使用了转载 2015-03-01 14:34:43 · 4829 阅读 · 2 评论 -
linux shell 中"2>&1"含义
linux shell 中"2>&1"含义脚本是: nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就转载 2015-03-28 10:10:54 · 392 阅读 · 0 评论 -
Linux Core文件简单实用
1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。2. 开启或关闭core文件的生成用以下命令来阻止系统生成core文件:ulimit -c 0下面的命令可以检查生成core文件的选项是否打开:ulimit -a该命令将显示所有的用户定制,其中选项-a代表“a转载 2015-03-28 10:21:34 · 444 阅读 · 0 评论 -
GDB 调试总结
总结和区别(我的理解): 1、默认当某个线程遇到break后所有的其他线程也会停止,该线程continue后所有其他线程也会一起执行,如果不想让其他线程一起执行那么可以使用线程锁模式(该模式指管continue的时候其他线程是否会同步一起执行),该模式的开启必须在已经停在某个断点后开可以。2、默认当某个线程遇到break后所有的其他线程也会停止,加入不想让其他没有遇到断点的原创 2015-03-28 19:13:05 · 897 阅读 · 0 评论 -
Linux 下三种共享内存方式
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。因此,采用共享内存的转载 2015-03-29 16:33:36 · 8560 阅读 · 0 评论 -
Linux 下ipcs 和ipcrm命令简单使用
是linux/uinx上提供关于一些进程间通信方式的信息,包括共享内存,消息队列,信号ipcs用法 ipcs -a 是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息ipcs -m 打印出使用共享内存进行进程间通信的信息ipcs -q 打印出使用消息队列进行进程间通信的信息ipcs -s 打印出使用信号进行进程间通信的信息输出格式的控制ipcs -t 输出信息转载 2015-03-29 16:08:58 · 606 阅读 · 0 评论 -
linux命令--wc
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。1.命令格式:wc [选项]文件...2.命令功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。3.命令参数:转载 2015-05-19 12:06:27 · 483 阅读 · 0 评论 -
linux 查看电脑配置信息
测试机器的硬件信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz (看到有8个逻辑CPU, 也知道了CPU型号) www.2cto.co转载 2015-05-26 10:25:15 · 1871 阅读 · 0 评论 -
libevent入门篇
libevent作为一个c网络库具有很好的可移植性。因为他包含了很多可移植的接口封装如linux支持的epoll、select,BSD支持的kqueue,window select等。学习libevent最好的方式就是阅读源码,首先我们需要看一下libevent的官方网站介绍首先对其有一个了解,介绍是英文写的很好,这里给个链接http://libevent.org/。 看完这原创 2015-07-20 14:07:56 · 776 阅读 · 0 评论 -
linux c++线程池的实现(多线程服务器)
本 文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行 任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简 单。为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库转载 2014-12-09 17:18:56 · 1916 阅读 · 0 评论 -
pthread_cleanup_push() 和 pthread_cleanup_pop()
线程终止时的清理不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如何保证线程终止时能顺利的释放掉自己所占用的资源,特别是锁资源,就是一个必须考虑解决的问题。最经常出现的情形是资源独占锁的使用:线程为了访问临界资源而为其加上锁,但在访问过程中被外界取消,如果线程处于响应取消状态,且采用异步方式响应,或者在打开独占锁以前的运行路径上存在取消点,则该临界资源转载 2014-12-24 11:14:12 · 533 阅读 · 0 评论 -
linux core文件GDB调试方法
一、如何使用core文件1. 使用core文件在core文件所在目录下键入:gdb -c core它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等。如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试:gdb -c core转载 2014-09-11 10:07:01 · 696 阅读 · 0 评论 -
linux多线程--生产者消费者问题
#include#include#define BUFFER_SIZE 8struct prodcons {//缓冲区相关数据结构int buffer[BUFFER_SIZE]; //实际数据存放的数组pthread_mutex_t lock;//互斥体lock,用于对缓冲区的互斥操作int readpos , writepos; //读写指针pth转载 2014-09-22 21:09:07 · 621 阅读 · 0 评论 -
APUE--pthreadatfork()函数理解
There are at least two serious problems with the semantics of fork() in a multi-threaded program. One problem has to do with state (for example, memory) covered by mutexes. Consider the case where o翻译 2014-10-07 18:30:56 · 631 阅读 · 0 评论 -
linux 可重入函数理解
主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。转载 2014-10-07 18:45:18 · 482 阅读 · 0 评论 -
Linux 多线程应用中如何编写安全的信号处理函数
Linux 多线程应用中编写安全的信号处理函数在开发多线程应用时,开发人员一般都会考虑线程安全,会使用 pthread_mutex 去保护全局变量。如果应用中使用了信号,而且信号的产生不是因为程序运行出错,而是程序逻辑需要,譬如 SIGUSR1、SIGRTMIN 等,信号在被处理后应用程序还将正常运行。在编写这类信号处理函数时,应用层面的开发人员却往往忽略了信号处理函数执行的上下文背景转载 2014-10-07 21:16:36 · 614 阅读 · 0 评论 -
鸟哥私房菜shell和shell脚本总结(仅自己看)
1、 cat 显示内容,和echo写入区别2、 $0 为返回值3、 &后台运行命令,例子:程序名&4、 echo 后边什么也不接当做回车使用5、 bash是shell的一种。6、 不打#!/bin/sh 将不能使用内建命令7、 echo –n “123” 没有后边的回车8、 echo $PATH,打印环境变量9、 增加环境变量内容 PATH=“$原创 2014-09-29 13:37:04 · 946 阅读 · 0 评论 -
使用sigwait同步处理异步信号
#include #include #include #include #include #include sigset_t mask;void* thr_func(void* arg){int err;int signo;pthread_t tid = pthread_self();pthread_detach(tid);原创 2014-10-08 20:37:35 · 539 阅读 · 0 评论 -
linux守护进程
linux编程-守护进程编写 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程转载 2014-10-08 20:53:04 · 374 阅读 · 0 评论 -
强制性锁建议性锁
fcntl有强大的功能,它能够复制一个现有的描述符,获得/设置文件描述符标记,获得/设置文件状态标记,获得/设置异步I/O所有权,获得/设置纪录锁。当多个用户共同使用,操作一个文件的情况,Linux通常采用的方法就是给文件上锁,来避免共享资源产生竞争的状态。fcntl文件锁有两种类型:建议性锁和强制性锁建议性锁是这样规定的:每个使用上锁文件的进程都要检查是否有锁存在,当然还转载 2014-10-12 10:59:19 · 542 阅读 · 0 评论 -
signal()和sigaction()函数简单用法
程序写着玩的,熟悉apue里面原创 2014-10-13 21:53:57 · 503 阅读 · 0 评论 -
linux消息队列实例
#include #include #include #include #include #include #include struct mymesg{ long type; char data[512];};int err_sys(char *p);void printfmsgds(struct msqid_ds ds){ //printf("msq_qnum原创 2014-10-19 21:24:13 · 578 阅读 · 0 评论 -
shell重定向使用
脚本是: nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对 于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述转载 2014-10-19 21:58:44 · 485 阅读 · 0 评论 -
netstat 使用详解
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行netstat后,其输出结果为Active Internet connections (w/o servers)Proto R转载 2015-01-07 15:34:20 · 612 阅读 · 0 评论 -
linux shell中各种括号的使用方法
from:http://www.cnblogs.com/hanyan225/archive/2011/10/06/2199652.html 在Shell中的小括号,大括号结构和有括号的变量,命令的用法如下:1.${var}2.$(cmd)3.()和{}4.${var:-string},${var:+string},${var:=string},${var:?strin转载 2014-12-21 13:10:48 · 2694 阅读 · 0 评论 -
Linux下利用backtrace追踪函数调用堆栈以及定位段错误
一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。int backtrace(void **buffer,int size) 该函数用于获取当前线程的转载 2014-12-05 16:02:35 · 638 阅读 · 0 评论 -
pthread_cond_wait()详解
1. 首先pthread_cond_wait 的定义是这样的The pthread_cond_wait() and pthread_cond_timedwait() functions are used to block on a condition variable. They are called with mutex locked by the calling thread or u转载 2014-12-24 10:22:39 · 782 阅读 · 0 评论 -
LVM基本原理
转载自 http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/22/3093405.html一、传统的磁盘管理其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Master Boot Recorder)都是通过先对一个硬盘进行分区,然后再将该分区进行文件系统的格式化转载 2016-02-25 20:05:46 · 624 阅读 · 0 评论