![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux 程序设计
文章平均质量分 58
yongjong
这个作者很懒,什么都没留下…
展开
-
openEuler 使用coredumpctl调试进程core
openEuler core文件 调试原创 2022-07-20 11:51:14 · 1139 阅读 · 1 评论 -
互斥锁,条件变量和信号量的区别
1.互斥锁必须总是由给它上锁的线程解锁。信号量则没有这种限制。2.信号量有一个与之关联的值,由挂出操作加1,由等待操作减1。3.能够从信号处理程序中安全调用的唯一函数是sem_post。原创 2013-07-06 13:49:33 · 707 阅读 · 0 评论 -
Linux下C线程池的实现
一个Linux下C线程池的实现 什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread转载 2013-07-19 22:03:29 · 446 阅读 · 0 评论 -
epoll使用详解(精髓)
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且转载 2013-07-17 23:33:53 · 330 阅读 · 0 评论 -
smtp rfc 中文文档
<!--p {margin-bottom:0.08in; direction:ltr; color:rgb(0,0,0); text-align:justify}p.western {font-family:"Century","Times New Roman",serif; font-size:10pt}p.cjk {font-family:"MS Min转载 2013-07-16 10:25:14 · 2240 阅读 · 0 评论 -
字节操纵函数
#includevoid bzero(void *dest,size_t nbytes);void bcopy(const void *src,void *dest,size_t nbytes);int bcmp(const(const void *ptr1,const void ptr2,size_t nbytes);返回:相等则返回0,否则返回非0,#inc原创 2013-07-15 22:53:05 · 495 阅读 · 0 评论 -
Linux C 套接字地址结构
IPv4 套接字地址结构IPv4套接字地址结构也称为网络套接字地址结构,以sockaddr_in 命名,定义在头文件中struct in_addr{ in_addr_t s_addr; /*32位IPv4 地址*/};struct sockaddr_in{ uint8_t sin_len; /*地址结构的长度*/原创 2013-07-15 20:29:57 · 578 阅读 · 0 评论 -
TCP 连接的建立和终止
tcp连接的三路握手原创 2013-07-15 14:20:12 · 521 阅读 · 0 评论 -
主机字节序
小端序:将低序字节存储在起始地址(intel 处理器采用小端序)。大端序:将高序字节存储在起始地址。确定主机字节序的程序:#include#include#includeint main(int argc,char **argv){ union { short s; char c[sizeof(shor原创 2013-07-15 20:56:23 · 527 阅读 · 0 评论 -
文件 I/O 函数
1. int open(const char *pathname,int oflag, ... /* mode_t mode */);头文件:#include功能:打开或创建一个文件返回值:若成功则返回文件描述符,出错则返回-1oflag取值:O_RDONLY , O_WRONLY , O_RDWR , O_APPEND , O_CREAT , O_EXCL , O_TRUNC ,原创 2013-07-14 22:09:30 · 506 阅读 · 0 评论 -
wget命令用法详解
wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。它有以下功能和特点:(1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了;(2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候转载 2012-12-12 21:41:50 · 351 阅读 · 0 评论 -
进程间通信编程--管道
创建两个管道,每个方向一个。步骤如下:1.创建管道1(fd1[0]和fd1[1])和管道2(fd2[0]和fd2[1]);2.fork;3.父进程关闭管道1的读出端(fd[0])4.父进程关闭管道2的写入端(fd2[1])5.子进程关闭管道1的写入端(fd1[1])6.子进程关闭管道2的读出端(fd2[0])#include#include#include原创 2012-12-10 20:26:12 · 253 阅读 · 0 评论 -
linux 进程管理---进程环境和属性总结
1.进程资源:进程:系统下用户管理事物的基本单元,每个进程有自己独立的运行空间。管理每个进程的资源的结构体:struct task_struct(定义在内核头文件include/linux/sched.h)结构体task_struct 包含的信息:线程基本信息,内存信息,tty终端信息,当前目录信息,打开文件描述符信息,信号信息以及进程属性2.用户级进程状态:就绪/运行原创 2012-12-10 20:22:51 · 446 阅读 · 0 评论 -
linux 程序设计 System V 信号量编程
概念:二值信号量:信号量的值为 0 或为 1。与互斥锁类似。计数信号量:其值在 0 和某个限制值之间的信号量。信号量的值就是可用资源数。等待操作:信号量的值变为大于 0,然后将它减 1。挂出操作:将信号量的值加 1,从而唤醒正在等待该信号量值变为大于 0 的任何线程。计数信号量集:一个或多个信号量(构成一个集合),其中每个都是计数信号量。每个集合的信号量存在一个限制,一般在 2原创 2012-12-10 19:50:17 · 427 阅读 · 0 评论 -
栈和堆的区别
栈是由编译器在程序运行是分配空间区域,由操作系统维护。里面的变量通常是局部变量,函数参数等。堆是由malloc函数分配的内存快,内存释放由程序员手动控制。主要区别:1.管理方式不同: 程序在运行时栈由操作系统自动管理,无需程序员手工控制;而堆空间申请释放工作由程序员控制,容易产生内存泄漏。2.空间大小不同: 栈是向低地址扩展的数据结构,是一块连续转载 2012-12-07 23:10:50 · 292 阅读 · 0 评论