随笔分类 - Unix/Linux系统编程
Programming on Unix/Linux OS. 文件系统. 网络 . shell
摘要:1. 进程虚拟空间 进程虚拟空间如下图: 如上图示:最高的1G空间保留给内核使用。接下来是栈,栈向低地址方向延伸(栈的大小受RLIMIT_STACK限制,默认为8M),下面是MMAP区(文件映射内存,如动态库等,SPP微线程的私有栈也位于这里),下面是堆(动态内存增长),堆向高地址方向延伸,接下来依
阅读全文
摘要:服务器端: snmptrapd -C -c my.conf -df -Lo #加载my.conf配置文件,在前台运行snmptrapd,并将日志刷到stdout 客户端请求: snmptrap -v 2c -c public 127.0.0.1:162 "localhost" .1.3.6.1.2.
阅读全文
摘要:1.close_wait状态介绍: 客户端主动关闭连接,服务器接收到客户端的FIN,但是还没有发送自己的FIN,此时的状态为close_wait状态,大量的close_wait状态拖累服务器性能 2.close_wait产生的原因: 某种情况下客户端关闭了连接,但是我方忙于读写,没有关闭连接 3.解
阅读全文
摘要:相关函数: stat, lstat, symlink 表头文件: #include <unistd.h> 定义函数:ssize_t readlink(const char *path, char *buf, size_t bufsiz); 函数说明:readlink()会将参数path的 符号链接内
阅读全文
摘要:1.message系统日志配置 1.1 在debian系linux系统中对应的是/etc/rsyslog.conf和rsyslogd。 通过查看rsyslog.conf文件,发现所有的配置文件都在/etc/rsyslog.d/文件夹下。 # /etc/rsyslog.conf Configurati
阅读全文
摘要:利用定时器,我们可以设定在未来的某一时刻,触发一个特定的事件。所谓低分辨率定时器,是指这种定时器的计时单位基于jiffies值的计数,也就是说,它的精度只有1/HZ,假如你的内核配置的HZ是1000,那意味着系统中的低分辨率定时器的精度就是1ms。早期的内核版本中,内核并不支持高精度定时器,理所当然
阅读全文
摘要:相信需要了解这方面的知识的小伙伴,已经基本对进程间通信和线程间通信有了一定了解。例如,进程间通信的机制之一:共享内存(在这里不做详解):多个进程可同时访问同一块内存。如果不对访问这块内存的临界区进行互斥或者同步,那么进程的运行很可能出现一些不可预知的错误和结果。 接下来我们了解三种常见的Linux下
阅读全文
摘要:int pthread_join(pthread_t thread, void **retval); int pthread_detach(pthread_t thread); void pthread_exit(void *retval); 线程正常终止的方法: 1、return从线程函数返回。
阅读全文
摘要:进程打开一个文件,会与三个表发生关联,分别是:文件描述符表、文件表、索引结点表。 当同一个进程对同一个文件多次使用open时;对一个文件描述符调用dup函数;父进程使用fork创建一个子进程,子进程和上面三个表的关系;当子进程调用exec函数,子进程和上三个表的关系又发生了什么变化;不同的进程打开同
阅读全文
摘要:1. 引入原因 由于在信号处理期间自动屏蔽了正在被处理的信号,而使用setjmp/longjmp跳出信号处理程序时又不会自动将 信号屏蔽码修改会原来的屏蔽码,从而引起该信号被永久屏蔽。 可以使用sigsetjmp/siglongjmp来解决这一问题。 2. 语法 #include<setjmp.h>
阅读全文
摘要:/*! * Email: scictor@gmail.com * Auth: scictor * Date: 6/9/2020 * File: DownloaderMainT.cpp * Class: %{Cpp:License:ClassName} (if applicable) * variab
阅读全文
摘要:epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能( 此时被监视的文件描述符数目非常大,与旧的 select 和 poll 系统调用完成操
阅读全文
摘要:执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同,只要信号被阻塞就不会递达,而忽略是在递达
阅读全文
摘要:sigaction函数sigaction函数的功能是用于改变进程接收到特定信号后的行为。int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);参数--第一个参数是信号的值,可以为除了SIGKIL
阅读全文
摘要:在写网络程序的时候,建立TCP socket: sock = socket(PF_INET, SOCK_STREAM, 0);然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置为AF_INET,即使用IP。 相关头文件中的定义:AF
阅读全文
摘要:线程的优先级无法保障线程的执行次序。只不过优先级高的线程获取 CPU 资源的概率大一点而已。 线程相关函数(1)-pthread_create(), pthread_join(), pthread_exit(), pthread_cancel() 创建取消线程 阅读目录 一. pthread_cre
阅读全文
摘要:IO多路复用 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。 操作系统的核心是内核,独立于普通的应用
阅读全文
摘要:linux中的sleep为库调用(library calls),其声明文件为unistd.h。 unsigned int sleep(unsigned int seconds); 如果进程或者线程调用sleep请求的休眠的时间seconds过去,那么会返回0;如果休眠期间被信号中断,那么返回剩余的休
阅读全文