linux编程相关
xiaowenmu1
这个作者很懒,什么都没留下…
展开
-
linux下守护进程的创建和sighup信号
先来说下我理解的守护进程:守护进程没有控制终端,我觉得可以把它理解为一个后台进程。本篇文章假设读者知道什么是进程组与会话。下面看一下unix环境高级编程中守护进程的创建流程:1.首先在进程中调用fork进程,这样就能保证子进程不是进程的组长进程(因为进程组的组长进程不能调用setsid创建新的会话),然后结束掉父进程。这时子进程就变成了会话首进程,并且创建了一个会话。2.接下来在会...原创 2019-04-11 17:19:09 · 570 阅读 · 1 评论 -
对sleep(0)和sched_yield一点理解
在了解sleep(0)和sched_yield之前先让我们看看linux是怎么调度的(这里只讲CFS)1.CFSCFS不会根据优先级分配一个不变的运行时间,比如说分配5ms这样的,它是一个分配占用处理器比例的一个分配算法。CFS的做法是允许每个进程运行一段时间,循环轮转,选择运行最少的进程(通过vruntime来判断,下面可以看到vruntime是怎么计算的)作为下一个运行进程,而不再采用...原创 2019-05-25 23:35:47 · 1180 阅读 · 0 评论 -
epoll在多线程下的使用
首先让我们思考一个问题,当一个进程正在阻塞在epoll_wait的时候,另一个线程调用epoll_ctl时会发生什么呢,这个动作安全吗?测试当epoll_wait期间另一个线程执行epoll_ctl是否安全其实这种动作是安全的(测试平台为linux,内核为4.4版本),先看一下man里面的描述,可见是安全的。1.下面让我们来测试一下,首先把fd2加入监听,然后再调用epoll_wa...原创 2019-05-11 14:10:46 · 8953 阅读 · 0 评论 -
vector内存分配浅析
STL中vector的内存分配原则是分配为2倍的,为什么是2倍呢,让我们来分析一下。其实分配内存就是在时间和空间上做一个平衡,如果每次增加的内存很少,那么在空间上浪费的就要少一点,但是时间耗费的要多。如果每次增加的内存很多,那么重新分配的次数就要少一点,时间耗费的也要少一点,但是浪费的空间就要多一点。可能有的人对空间浪费的说法不太清除,我在这里简单说明一下。假设每次增加内存时都以常数c增加,那...原创 2019-05-10 14:16:39 · 2896 阅读 · 0 评论 -
C++类型转换
在讲类型转换之前,我们先说一下数字是怎么在计算机中存储的。其实数字在计算机中都是用二进制0,1表示的,比如说int a = 3,那么它在计算机中的存储格式为00000000000000000000000000000011。负数是以补码的形式存储的,关于补码可以自己去了解下,这涉及到源码反码的概念。1.比int小的首先转换成int,unsigned int,long,unsigned long,...原创 2019-04-25 10:45:32 · 1123 阅读 · 0 评论 -
linux定时器timerfd系列函数学习
使用timerfd的好处是可以结合epoll或poll或select使用,当超时时间到时epoll等会返回可读。1.int timerfd_create(int clockid,int flags)timerfd_create返回一个文件描述符,该文件描述符和定时器所关联。clockid:clockid可以为CLOCK_REALTIME或者CLOCK_MONOTONIC。最好使...原创 2019-04-29 17:09:32 · 682 阅读 · 0 评论 -
当一个会话中的后台作业写终端时会发生什么情况(SIGTTOU 和SIGTTIN信号)
在一个会话中只有前台进程组能够读写终端,但是当后台进程读写终端会发生什么情况呢。1.上面的测试案例是测试写到终端的情形,执行这个程序之前,先执行命令 stty tostop ,禁止后台作业输出至控制终端。再执行上面的程序,用trace来追踪可见该进程收到了SIGTTOU信号并且停止了。再把程序放在前台来,又能正常运行了2.让我们再测试一下读会怎么样,测试代码如下让...原创 2019-04-23 22:27:00 · 399 阅读 · 0 评论 -
文件描述符状态标志
目前只有一种文件描述符状态标志FD_CLOEXEC,它的作用就是标志着执行exec时该文件描述符会不会主动关闭。如果清除了该标志,就表明执行exec时该文件描述符不会关闭。系统的默认操作是在exec后仍保持这个文件描述符为打开状态。dup、dup2和fcntl对文件描述符状态标志的影响1.新描述符的执行时关闭标志总是由dup函数清除,这样当执行exec时新描述符保持打开状态。2.先看一...原创 2019-04-13 14:59:34 · 717 阅读 · 0 评论 -
linux下几种情况下的文件共享情况
内核使用3种数据结构表示打开文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。(值得注意的是如果共享文件表项的话那么它们也共享文件偏移量,对文件进行读写操作的时候需要注意这一点)(1)每个进程在进程表中都有一个记录项,记录项中包含一张打开文件描述符表,可将其视为一个矢量,每个描述符占用一项。与每个文件描述符相关联的是:a.文件描述符标志(close_on_exec...原创 2019-04-13 13:39:26 · 312 阅读 · 0 评论 -
malloc,mmap
http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201210975312473/http://blog.sina.com.cn/s/blog_7c60861501015vkk.htmlLinux 的虚拟内存管理有几个...转载 2019-06-12 20:29:49 · 301 阅读 · 0 评论