APUE
文章平均质量分 79
Peter_tang6
这个作者很懒,什么都没留下…
展开
-
fork和execl
此去经年,应是良辰好景虚设。便纵有,千种风情,更与何人说。——柳永《雨霖铃》 最近在实现一个对开发板进行截屏的功能,其中用到了execl函数,下面就先介绍一下execl函数吧。execl函数用来执行某条命令。 execl函数包含于 #include 中,他是这样定义的: int execl(const char *path, const char *arg, ....);原创 2017-05-01 19:57:09 · 2507 阅读 · 0 评论 -
APUE获取网卡ip字段以及文本切割命令的使用
昨夜西风凋碧树,独上高楼,望尽天涯路。——五代·晏殊·蝶恋花 最近学习了APUE的一系列函数,要求用ifconfig命令来获取本机的网卡ip,下面根据学长的博客复述一段代码来获取ip字段: /********************************************************************************* * Copyrig原创 2017-05-11 22:20:20 · 331 阅读 · 0 评论 -
网络编程之IPC通信
在年轻人的颈项上,没有什么东西能比事业心这颗灿烂的宝珠更迷人的了。 —— 哈菲兹 初识socket网络编程,这篇文章先介绍一下简单的IPC通信IPC通信即为本地通信,是本机进程之间的通信。先说一下本地通信所需要的结构体#include <un.h> struct sockaddr_un{ int sun_family; //用于指定协议族,和socket()的第一个参数一致。原创 2017-06-05 18:17:59 · 1538 阅读 · 0 评论 -
生产者/消费者问题
在模块化编程中,高内聚和低耦合通常是我们要达到的标准,相信对于生产者消费者就是一个这样的问题。 在对线程的学习中,看了一下这个实例,因此在这里学习一下。 生产者和消费者问题是一个经典的线程同步的问题,在实际生活中我们很容易遇到,也称为有限缓冲区问题,生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时原创 2017-08-14 14:17:27 · 1335 阅读 · 0 评论 -
关于互斥量和条件变量
条件变量一般用于阻塞线程以及给线程发信号,解除阻塞。而条件变量往往和互斥量一起使用,因为条件变量在阻塞的时候会有一个加锁解锁的过程。还记得以前写过一个生产者——消费者的实例,那时候对一些问题还不是很理解。下面是一个简单的练习实例,以及最后总结遇到的一些问题。 //wait后面要执行的语句必须在while循环之内 //wait后面必须要解锁 //最后一个函数执行的时候不要解锁 //查看pthrea...原创 2018-08-31 09:19:11 · 631 阅读 · 0 评论 -
关于线程的内存泄漏问题
线程在程序设计中占有很重要的地位,而关于线程的使用方法和注意事项也有很多,这篇文章主要讲讲如何创建一个线程并且让我们的程序避免内存泄露问题的出现。 线程的创建很简单,使用pthread_create函数,但是要注意参数的问题。 下面就一些例子说明线程的内存泄露问题。 ``` #include "../common.h" //包含一些函数所需要的头文件 pthread_t ...原创 2018-08-24 14:41:15 · 1825 阅读 · 0 评论 -
多线程socket练习中的问题
以前写过多进程的socket通信,但是没有深究其中的一些细节问题,这次从多线程socket通信中学习到了很多东西,下面直接给出这次练习的程序代码: //pthread_t tid应该在循环里面,每次创建一个去执行线程 //close(fd)的问题,无法关闭fd,论shutdown和close的区别,shutdown禁用套接字,但是不减计数,close直接关闭套接字,描述符减1 //客户端一...原创 2018-08-30 10:10:13 · 549 阅读 · 0 评论 -
文件I/O
本章主要说明系统调用相关的文件I/O函数 基本函数有open、read、write、lseek和close 不带缓冲的I/O,即每个read和write都直接调用内核中的一个系统调用,和后面第五章的标准I/O有所差别,标准I/O是通过标准函数调用系统调用的。 原子操作:由于多进程之间的资源共享问题,特别是在操作文件的时候,我们必须保证同一时刻只有一个进程在操作文件,才能保证文件数据不被搞乱,...原创 2018-09-05 14:12:33 · 374 阅读 · 0 评论 -
关于条件变量
最近想自己实现一个线程池,发现线程池的实现主要是条件变量和互斥量的使用,因此先练习了条件变量个互斥锁。这篇文章主要记录学习过程中遇到的问题。 下面是自己写的一个程序,用于练习。 #include "../common.h" //包含线程所需头文件 pthread_t pid1, pid2; pthread_cond_t num; pthread_mutex_t mu...原创 2018-12-19 08:41:40 · 319 阅读 · 0 评论