linux
1100022702
这个作者很懒,什么都没留下…
展开
-
守护进程
守护进程是在后台运行且不与任何控制终端关联的进程。守护进程没有控制终端通常源于它们由系统初始化脚本启动。然而守护进程也可能从某个终端由用户在shell提示符下键入命令行启动,这样的守护进程必须亲自脱离与控制终端的关联,从而避免与作业控制、终端会话管理、终端产生信号等发生任何不期望的交互,也可以避免在后台运行的守护进程非预期地输出到终端。编程实例:#include #include原创 2015-01-08 16:44:24 · 434 阅读 · 0 评论 -
使用GDB调试程序
1、GDB简单使用教程(1)源文件原创 2014-09-13 18:47:54 · 1000 阅读 · 0 评论 -
使用Makefile构建工程
1、工程目录如下/root/myproject/|-- Makefile|-- bin|-- include|-- lib|-- libtest| `-- src| |-- Makefile| |-- libtest.cpp| `-- libtest.h`-- test |-- include | `-- test原创 2014-09-18 16:23:52 · 1081 阅读 · 0 评论 -
Linux软链接和硬链接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬链接】硬链接指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的转载 2015-01-07 17:41:03 · 285 阅读 · 0 评论 -
Linux动态库的创建与使用
以下是一个简单的例子:三个文件libtest.h, libtest.c和main.c。libtest.c定义动态库函数,main.c调用动态库函数, 为简单起见,这三个文件保存在同一个目录中。/*libtest.h*/void test(void);/*libtest.c*/#include “stdio.h”#include "libtest.h"void tes原创 2013-10-15 13:55:28 · 855 阅读 · 0 评论 -
Linux静态库的创建与使用
以下是一个简单的例子:三个文件libtest.h, libtest.c和main.clibtest.c定义动态库函数,main.c调用动态库函数, 为简单起见,这三个文件保存在同一个目录中。/*libtest.h*/void test(void);/*libtest.c*/#include “stdio.h”#include "libtest.h"void test原创 2014-12-01 13:43:52 · 502 阅读 · 0 评论 -
lsof 命令
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。lsof +d /usr/local 显示当前目录下被进程打开的文件lsof +D /usr/local 显示当前目录下被进程打开的文件,包括其他目录下的文件lsof file转载 2014-12-01 09:42:36 · 323 阅读 · 0 评论 -
netstat 实用实例
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 ,masquerade连接,多播成员等等。常见参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服務状态-p转载 2014-11-27 15:11:54 · 366 阅读 · 0 评论 -
使用gdb调试死锁线程
1.调试文件 lock.c#include #include #include void *work_thread(void *arg){ pthread_mutex_t mutex; pthread_mutex_init(&mutex, 0); usleep(1000*1000); fprintf(stderr, "timeout we will start dead lo转载 2014-11-27 18:04:54 · 13152 阅读 · 1 评论 -
ipcs 和 ipcrm 命令
ipcs 用于报告系统的消息队列、信号量、共享内存等。ipcs用法:ipcs -a 显示所有ipc的信息ipcs -m 显示使用共享内存进行ipc的信息ipcs -q 显示使用消息队列进行ipc的信息ipcs -s 显示使用信号量进行ipc的信息ipcs -p 显示创建者和对应的进程idipcs -c 显示ipc方式的创建者以及属主的uid和gid转载 2014-11-27 17:58:45 · 638 阅读 · 0 评论 -
tcpdump 实用实例
监视指定网络接口的数据包tcpdump -i eth1 //默认监听eth0监视指定主机的数据包获取主机收到和发出的所有数据包tcpdump host ip或hostname打印helios 与 hot 或者与 ace 之间通信的数据包tcpdump host helios and \( hot or ace \)截获主机210.27.48.1转载 2014-11-27 15:21:01 · 455 阅读 · 0 评论 -
线程执行N次后,进程执行M次,如此循环S次
#include #include #define LOOP_S 10#define PRT_M 2#define PRT_N 1int g_flag = 0;pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t g_cond = PTHREAD_COND_INITIALIZER;void原创 2015-03-13 12:28:21 · 656 阅读 · 0 评论 -
N个线程顺序输出,循环M遍
#include #include #define THREAD_N 3#define LOOP_M 10int num[THREAD_N];int flag = 0;pthread_cond_t g_cond = PTHREAD_COND_INITIALIZER;pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER;voi原创 2015-03-13 11:36:47 · 726 阅读 · 0 评论 -
vim够用命令
1. 启动vim编译器vim filename 打开原有的文件或创建一个新文件。vim 打开一个新文件,在编辑过程中或结束编辑时再指定文件名。vim –r filename 恢复因意外停机或终端连接中断而未及时保存最终编辑结果的文件。原创 2012-02-27 20:20:37 · 429 阅读 · 0 评论 -
四天精通shell编程(四)--完结篇
五流程控制2 for语句1)使用in关键字循环根据变量的不同取值,重复执行一组命令操作格式:for变量名 in取值列表do命令序列done例子11:循环#相对来说这种循环机制更适用于系统管理,这就联系到了,现在有各种各样的编程语言的现象!#!/bin/bashfort转载 2015-05-13 11:24:08 · 609 阅读 · 0 评论 -
四天精通shell编程(三)
四 条件测试test 测试条件 测试内容[测试条件 测试内容] #用的更为广泛1 测试文件类型test -e 文件名 测试文件是否存在,存在为真[ -e 文件名 ] 注意:[]的左右两侧必须加空格!附:test测试结果并不显示,需用echo$? 来显示test的返回值返回0语句正确,非0表示转载 2015-05-13 11:21:11 · 695 阅读 · 0 评论 -
四天精通shell编程(二)
二 变量5 位置参数变量$0命令自己$1 第一个参数$2 第二个参数$9 第九个参数例2:输出位置参数变量,脚本后要接参数#!/bin/bashecho"the command is $0"echo"canshu1 is $1"echo"canshu2 is $2"6转载 2015-05-13 11:20:29 · 696 阅读 · 0 评论 -
四天精通shell编程(一)
沈超:微博:weibo.com/lampsc一 shell简介1 概念命令解释器2 常见shellbash linux标准shell附:她保存在/etc/bash里面,是一个二进制可执行文件,所以不能直接:vim/bin/bash 会是乱码sh 早期shell,较简单csh(UNIX转载 2015-05-13 11:19:14 · 1430 阅读 · 0 评论 -
实际用户ID,有效用户ID及设置用户ID
看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解。今天好好区分了一下这几个概念并总结如下。说白了这几个UID引出都是为了系统的权限管理。 下面分别用RUID, EUID,SUID来表示实际用户ID,有效用户ID,设置用户ID。另外用户ID是个整型数,为了说明方便真接使用了用户名来代表不同的UID。先解释一下这几个ID的作用:转载 2015-04-21 14:17:42 · 362 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不转载 2015-04-21 10:38:15 · 344 阅读 · 0 评论 -
linux select多路复用机制
函数作用:系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应的FILE *结构的表示就是stdin、转载 2015-04-21 10:34:28 · 363 阅读 · 0 评论 -
epoll源码实现分析
epoll用法回顾先简单回顾下如何使用C库封装的3个epoll相关的系统调用。更详细的用法参见http://www.cnblogs.com/apprentice89/archive/2013/05/06/3063039.htmlint epoll_create(int size);int epoll_ctl(int epfd, int op, int fd, struct epoll_转载 2015-04-21 10:35:43 · 525 阅读 · 0 评论 -
epoll 模型
server.cpp#include #include #include #include #include #include #include #include #include #include #define MAX_SOCKFD_COUNT 2000int main(){ int listen_sock; sockaddr_in srv_addr; s原创 2014-12-19 17:29:03 · 455 阅读 · 0 评论 -
awk简单教程
有一张表 qqinfo.txtSeq QQ Age Sex From01 12345 20 male guangdong,shenzhen02 23456 21 female sichuan,chengdu03 34567 19 female fujian,fuzhou04 45678 22原创 2015-04-22 17:52:10 · 511 阅读 · 0 评论 -
简单makefile编写
1、动态库和静态库原创 2014-09-13 13:21:03 · 394 阅读 · 0 评论 -
Linux用户终端命令
名称:ls 使用方式:ls [-alrtAFR] [name...] 说明:显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。 参数: -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为“.”的视为隐藏档,不会列出) -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小(字节)等资讯详细列出 -lh同-l,但文件转载 2012-02-27 20:00:50 · 436 阅读 · 0 评论 -
fstat/stat系统调用
功能描述:获取文件(普通文件,目录,管道,socket,字符,块)的属性。用法:#include #include #include int stat(const char *restrict pathname, struct stat *restrict buf); 提供文件名字,获取文件对应属性。int fstat(int filedes, struct stat原创 2012-03-14 00:17:40 · 1035 阅读 · 0 评论 -
fork函数的用法
一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。创建fork.c文件并运行,如下原创 2012-03-06 22:46:52 · 539 阅读 · 0 评论 -
Linux下的进程环境
命令行参数在操作系统下为执行某个程序或命令而键入的一行字符称命令行,通常命令行含有可执行文件名及若干个参数,并以回车结束。如:cp aa bb main函数用指针数组接收命令行参数main函数的形式为:main(int argc,char *argv[ ])其中agrc与argv是main函数的两个形参。 main函数是由系统调用,形参的值是由命令行参数给原创 2012-02-29 19:35:40 · 304 阅读 · 0 评论 -
fork VS vfork
创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork(),当然某些进程如init等是作为系统启动的一部分而被内核创建的。1. fork函数#include sys/types.h>#include unistd.h>pid_t fork (void );正确返回:父进程中返回子进程的进程号;子进程中返回0;错误返回:-1; 子进程是父进程的一原创 2012-05-22 20:02:28 · 471 阅读 · 0 评论 -
linux内核空间和用户空间
Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G字节(从虚拟地址 0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间”)。因为每个进程可以通过系统调用进入转载 2012-05-15 12:09:53 · 302 阅读 · 0 评论 -
linux系统中的时间函数
time_t time(time_t *);time函数将返回从1970年1月1日的UTC时间的0时0分0秒算起到现在所有的秒数。参数t是一个指针,即使不是空指针,函数也会将返回值存到t指针所指的内存单元。time_t 是一个long类型。struct tm *gmtime(time_t *timep);struct tm{ int tm_sec; int tm_mi转载 2012-04-24 23:34:46 · 482 阅读 · 0 评论 -
有名管道
管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。 FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间)。原创 2012-03-27 10:31:12 · 7799 阅读 · 2 评论 -
Linux下常用解压命令
.zip解压: unzip filename.zip压缩:zip filename.zip dirname.rar解压:rar x filename.rar压缩:rar a filename.rar dirname.tar解包:tar xvf filename.tar打包:tar cvf filename.tar dirname.bz2解压:bz原创 2013-10-15 14:39:20 · 529 阅读 · 0 评论 -
作业、进程、线程
作业是用户在一个事务处理过程中要求计算机系统所做工作的集合。它包括用户程序、所需要的数据及控制命令等。作业是由一系列有序的步骤组成的。进程是有独立功能的程序关于某个数据集合的一次运行活动。线程是进程中的一个实体,是被系统独立调度和执行的基本单位。进程和线程的区别:1. 线程是处理机分配单位,进程是资源分配单位。2. 进程之间可以并发执行,同一个进程中的多个线程之间也可并发执原创 2012-08-24 16:46:33 · 336 阅读 · 0 评论 -
Linux系统调用
系统调用系统调用操作系统为用户态进程与硬件及内核资源进行交互提供的一组接口。系统调用可被看成是一个内核与用户空间程序交互的接口。极大的提高了系统的安全性使用户程序具有可移植性 系统调用与系统命令系统命令相对API,更高一层,每个系统命令都是一个可执行程序。系统命令的实现调用了系统调用。通过strace命令可以查看系统命令所调用的系统调用:#strace原创 2012-05-29 15:26:28 · 316 阅读 · 0 评论 -
消息队列
消息队列就是消息的一个链表,它允许一个或多个进程向它写消息,一个或多个进程从中读消息。具有一定的FIFO的特性,但是可实现消息的随即查询。这些消息存在于内核中,由“队列ID”来标识。消息队列的实现包括创建和打开队列、添加消息、读取消息和控制消息队列这四种操作。msgget:创建和打开队列,其消息数量受系统限制。 int msgget (key_t key, int flag)原创 2012-03-27 12:40:57 · 1353 阅读 · 0 评论 -
通过linux系统宏定义,遍历系统中的进程
1. 编写list.c文件 2. 编写Makefile文件转载 2012-05-04 14:31:54 · 576 阅读 · 0 评论 -
linux驱动编程
1. 编写hello.c文件 2. 编写Makefile文件 3.在终端输入make会生成 hello.o , hello.ko , hello.mod.c , hello.mod.o , Module.symvers , modules.order文件 4.在终端输入sudo insmod hello.ko加载模块 5.在终端输入dmesg原创 2012-05-01 21:21:11 · 313 阅读 · 0 评论 -
管道
管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 管道是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享方式,又称pipe文件。 管道的特点:l 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;l 只能用于父原创 2012-03-27 00:32:39 · 845 阅读 · 0 评论