有名信号量——无关进程间同步
摘要:1、概述 上两篇博客中无名信号量可以用于线程间同步或者相关进程间同步,而有名信号量可以在无关进程间同步,因为有名信号量是将信号量存储在文件中,在不同的进程中打开相同的文件即可,有名信号量的文件都存储在/dev/shm目录下。 无名信号量通过sem_init进行初始化,使用完之后用sem_destro
阅读全文
无名信号量——相关进程间同步
摘要:1、概述 无名信号量可以在相关进程间进行同步,所谓相关进程暂时先简单的理解为父子进程,最后再详细的解释一下。在上一篇博客 无名信号量——线程间同步 https://www.cnblogs.com/Suzkfly/p/14336610.html中已经介绍过信号量相关的各个函数,其中sem_init第二
阅读全文
无名信号量——线程间同步
摘要:1、 概述 在linux中,线程就相当于一个轻量级的进程,它常常被用来完成某种特定功能的事情。假如一个进程创建了多个线程,这些线程要一起配合完成一件更大的事情,这个时候就需要用到线程同步机制了。在Linux中通常用信号量实现线程间的同步。 这种情形可以用现实生活中来举例子,比如甲乙两个人用双人手拉锯
阅读全文
TCP程序优化
摘要:1. TCP Server测试 在我https://www.cnblogs.com/Suzkfly/p/14049687.html这篇博客中提到,按照文种的范例程序测试,在Ubuntu中运行a.out,在windows下用网络调试助手不断的断开重连,在Ubuntu下另开一个终端,运行执行ps -au
阅读全文
Linux中让终端输入变为非阻塞的三种方法
摘要:介绍 在linux下每打开一个终端,系统自动的就打开了三个文件,它们的文件描述符分别为0,1,2,功能分别是“标准输入”、“标准输出”和“标准错误输出”,同时对应了三个文件流指针,分别是stdin,stdout和stderr。三个文件描述符定义了对应的宏,分别为STDIN_FILENO,STDOUT
阅读全文
3、wait和waitpid
摘要:1. 函数介绍 wait函数:调用该函数使进程阻塞,直到任意一个子进程结束,或者该进程接收到了一个信号为止,如果该进程没有子进程或该进程的子进程已经结束,wait函数立即返回。 waitpid函数:与wait函数类似,但可以指定子进程的PID以及等待方式(阻塞和非阻塞)。 他们的函数原型如下: pi
阅读全文
2、fork函数与进程ID
摘要:1. fork函数 fork函数用于克隆一份当前的进程资源,调用fork函数之后,进程一分为二,并且两个进程的资源是一样的(只是资源内容完全一样,并不是同一份资源)。fork函数的函数原型为:pid_t fork(void); 需要包含unistd.h,返回值pid_t类型实际上就是int型。 在调
阅读全文
TCP客户端程序
摘要:TCP客户端程序的函数调用顺序为:socket -> connect -> send/recv socket、send和recv函数在TCP服务器程序中已经说过了,这里就不赘述了。 connect connect函数的原型为:int connect(int sockfd, const struct
阅读全文
TCP服务器程序
摘要:Linux下编写TCP服务器调用的函数顺序为:socket -> bind -> listen -> accept -> recv/send socket 参见:http://c.biancheng.net/view/2131.html socket函数成功返回文件描述符,失败返回-1 bind 参
阅读全文
线程
摘要:线程的创建 原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 参数: thread:线程ID存放空间地址 attr:线程属
阅读全文
linux动态库
摘要:在我写的另一篇博客中讲解了静态库的使用:https://www.cnblogs.com/Suzkfly/p/14298950.html 本篇讲解动态库的使用,还是编写两个测试程序,main.c和hello.c,在main.c中调用hello.c中的函数。 hello.c 1 #include <st
阅读全文
linux静态库
摘要:库文件可以理解为别人写好的现成的代码,但是看不见源码,只提供程序入口。库又分为动态库和静态库,静态库是在编译的时候将库编译进可执行程序中,运行时不再依赖库文件,而动态库是在运行时加载,运行时需要依赖库文件。静态库以libxxx.a命名,动态库以libxxx.so命名。 比如编写两个文件,hello.
阅读全文
cfsetispeed、cfsetospeed和cfsetspeed探究
摘要:在我https://www.cnblogs.com/Suzkfly/p/11055532.html这篇博客中有一个疑问,就是在串口设置波特率的域中,没有将输入输出波特率分开,那为什么会有几个不同的设置波特率的函数,首先看man手册里对几个函数的描述。 函数原型: int cfsetispeed(st
阅读全文
linux串口编程
摘要:按照对linux系统的理解,串口编程的顺序无非就是open,read,write,close,而串口有波特率、数据位等重要参数需要设置,因此还应该用到设置函数,那么接下来就带着这几个问题去学习linux下的串口编程。 1、open linux串口编程其实也是文件编程,首先要用open函数打开串口设备
阅读全文