Linux
文章平均质量分 54
SilentAssassin
If you wish for peace, prepare for war
展开
-
编译UNP源码
读UNP需要用到官方的源码,记录一下折腾的记录。源码下载地址 http://www.unpbook.com下载源码后,解压出文件夹unpv13e,cd进入后,依次进行下面操作。./configurecd libmake这两步没有问题,出现warning也不用管,然后是:cd ../libfreemake这里报错:inet_ntop.c: In funct...原创 2018-07-15 18:29:34 · 558 阅读 · 2 评论 -
退出与报错函数
exit函数exit中的参数exit_code为0代表进程正常终止,若为其他值表示程序执行过程中有错误发生。出错时退出一般用exit(EXIT_FAILURE);errnoerrno表示错误代码。 记录系统的最后一次错误代码。代码是一个int型的值,在errno.h中定义。系统每一次出错都会对应一个出错代码,例如12表示“Cannot allocate memory”。st...原创 2018-08-29 16:54:02 · 1159 阅读 · 0 评论 -
守护进程
守护进程是一种后台进程,类似Windows服务,它脱离终端运行,不能直接和用户交互,不受登陆注销影响,周期性执行任务,一般网络服务都以守护进程的形式运行。守护进程程序的名称通常以字母“d”结尾,例如syslogd就是指管理系统日志的守护进程。查看守护进程的方法: ps -ajx,进程中带-1的是守护进程 ps -eo pid,sid,tty,cmd,进程中tty对应?且pid和sid不同...原创 2018-08-30 19:50:33 · 573 阅读 · 0 评论 -
互斥锁,读写锁,条件变量,自旋锁
互斥锁在多线程的情况下,当一个变量可以被多个线程修改时,就需要考虑多线程同步问题。线程A修改变量前,先加锁,修改结束再解锁,然后线程B获取同样的锁,修改结束再解锁,如果不是同一把锁,同步是无效的。在C++中使用pthread的互斥量接口实现数据同步,线程A对互斥量mutex加锁后,其他尝试加锁的线程都会阻塞,等线程A解锁后,其他线程从阻塞变为运行态,第一个抢到CPU的线程加锁成功,其他线程...原创 2018-08-30 19:50:16 · 1400 阅读 · 1 评论 -
Linux进程分析(三) fork循环创建Linux子进程
forkfork的意思是复制进程,就是把当前的程序再加载一次,加载后,所有的状态和当前进程是一样的(包括变量)。fork不象线程需提供一个函数做为入口, fork后,新进程的入口就在 fork的下一条语句。 返回值为pid_t,实际是unsigned int:子进程中为0,父进程中为子进程ID,出错则为-1。开始写了几个都不成功,最后终于成功了:pid_t p = getpid(...原创 2018-08-30 19:49:54 · 2369 阅读 · 1 评论 -
Linux进程分析(二) 父子进程与进程组
ps命令一般用来显示终端信息和进程信息,运行命令ps -eo pid,comm,cmd可以输出所有进程的信息,e代表所有进程,后面三个参数是需要输出的信息。第一列PID是一个整数,每一个进程都有一个唯一的PID来代表自己的身份,进程也可以根据PID来识别其他的进程。第二列COMMAND是这个进程的简称。第三列CMD是进程所对应的程序以及运行时所带的参数。 PID为1的进程是systemd...原创 2018-08-30 19:49:36 · 4015 阅读 · 0 评论 -
Linux进程分析(一) 虚拟内存和物理内存
物理内存面临的问题问题 1我们现在常用的电脑有32位和64位,这里以32位为例。32位的系统可用的地址空间有就是2的32次方,即4G,现在的电脑物理内存大多都在4G以上,可以前的电脑内存都达不到4G,我们的程序希望能用4个G,这也就是内存面临的第一个问题:物理内存小于系统位数的要求大小该怎么处理? 问题2程序直接使用物理内存,会出现没有连续可用空间的情况,也是不能最大利用...原创 2018-08-30 19:49:17 · 4135 阅读 · 0 评论 -
基于信号量的生产者-消费者
信号量是进化版的互斥锁,互斥锁只能供一个线程使用,信号量可以供多个线程使用。如果希望在多个线程之间对某对象的部分数据共享,互斥锁无法实现,只能将整个数据锁住,这样导致线程并发性下降。 信号量既能保持同步,数据又不混乱,又能提高线程并发。主要函数:int sem_int(sem_t* sem, int pshared, unsigned int value); //初始化信号量i...原创 2018-08-30 19:46:47 · 362 阅读 · 0 评论 -
图解fork函数机制(简单易懂)
fork函数机制十分难以理解,尤其涉及到循环fork时就更难搞清楚,例如: for(i=0; i<3; i++){ pid = fork(); if(pid>0) std::cout<<"pid: "<<getpid()<<endl;原创 2018-07-29 18:16:00 · 5014 阅读 · 1 评论 -
常用shell命令
查找字符串grep -r "struct event_base {" -n 在当前目录查找字符串,找到后返回文件和对应的行 统计文件行数、字节、字数wc命令,选项-l, -c, -w分别统计行数、字节、字数,可统计多文件,但不能统计目录。wc -c main.cppwc -l *.cppwc -l main.cpp test.cpp t.cpp //统计三个文件...原创 2018-08-29 16:58:35 · 223 阅读 · 0 评论