高级Linux程序设计第四章:线程
要想使用POSIX标准线程API(pthreads),需要连接libpthread.so库到程序中。 1、创建线程 进程中的每个线程都有一个线程号,类型为pthread_t。 用pthread_self函数可以返回当前线程的线程号。 线程号之间的比较可以用函数pthread_eq...
高级Linux程序设计第三章:进程
每个进程都有一个唯一的进程号。 每个进程都有一个父进程。 系统中的进程以树的形式组织,init进程(进程号为1)作为根。 进程0是调度进程,没有程序与之对应,是内核的一部分。 进程1是init进程,是在系统启动的阶段由内核启动的,对应/sbin/init程序,是普通的用...
【原创】《Linux高级程序设计》杨宗德著 - Linux Socket网络编程基础 - 网络通信基础
【原创】《Linux高级程序设计》杨宗德著 - Linux Socket网络编程基础 - 网络通信基础 TCP/IP协议簇 TCP/IP是一组协议的代名词,包括许多别的协议,组成了TCP/IP协议簇。其中比较重要的有SLIP协议、PPP协议、IP协议、ICMP协议、ARP协议、TCP协议、UDP...
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - Linux常见信号及处理
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - Linux常见信号及处理 Linux的信号是一种进程间一步通信的机制,在实现上是一种软中断,信号可以导致一个正在运行的进程被异步打断,转而处理一个突发事件。异步事件是不可预见的,只能通过某些特定的方式来预防,或者说,当异步事...
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号量通信机制
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号量通信机制 信号量通信机制概念图 通常所说的创建一个信号量实际上是创建了一个信号量集合,在这个信号量集合中,可能有多个信号量,整个信号量集合由以下部分组成。 信号量集合数据结构 每一个信号量结构 Linux信号量管...
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - System V进程间通信之消息队列
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - System V进程间通信之消息队列 消息队列IPC原理 消息队列数据结构struct msqid_ds 消息队列数据结构struct msg_msg Linux消息队列管理 1. 创建消息队列 2. 消息队列属性控...
【linux高级程序设计】(第十三章)Linux Socket网络编程基础 2
BSD Socket网络编程API创建socket对象int socket (int __domain, int __type, int __protocol) :成功返回socket文件描述符,失败返回-1.参数1:socket对象使用的地址簇或协议簇 常用的有PF_LOCAL(本机通信)、PF_...
【原创】《Linux高级程序设计》杨宗德著 - Linux多线程编程 - 线程同步机制
【原创】《Linux高级程序设计》杨宗德著 - Linux多线程编程 - 线程同步机制 互斥锁基本原理 互斥以排他方式防止共享数据被并发修改。互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁绑定后,对该共享资源的访问如下操作:(1)在访问该资源前,首先...
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 回收进程用户/内核资源
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 回收进程用户/内核资源 1. 回收进程用户空间资源 在Linux系统下,可以通过一下方式结束进程: 1. 显示调用exit或_exit系统调用; 2. 在main函数中执行return语句; 3. 隐含地离开main函数...
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - System V进程间通信基础
【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - System V进程间通信基础 System V IPC基础 可以使用ipcs查看当前系统正在使用的IPC工具。可以看出,一个IPC工具至少包含key值、ID值、拥有着、权限和使用大小等关键信息。如需手动删除某个IPC机制,...
【原创】《Linux高级程序设计》(杨宗德著)--- 文件及文件流
【原创】《Linux高级程序设计》(杨宗德著)--- 文件及文件流 文本文件和二进制文件的区别 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形...
【视频】Linux高级程序设计01.1开发工具及gcc gdb
【课程笔记】 Linux 下编辑调试工具,gcc,gdb。 把高级语言编译成二进制可执行代码的工具。 需要经历四个步骤: (1) 预处理:去掉注释,进行宏替换(#define相关),头文件(#include)包含等工作 gcc -E test.c -o test.i (2) 编译:不同平台采...
【linux高级程序设计】(第十三章)Linux Socket网络编程基础 2
BSD Socket网络编程API 创建socket对象 int socket (int __domain, int __type, int __protocol) :成功返回socket文件描述符,失败返回-1. 参数1:socket对象使用的地址簇或协议簇 常用的有PF_LOC...
高级Linux程序设计第三章:进程
每个进程都有一个唯一的进程号。 每个进程都有一个父进程。 系统中的进程以树的形式组织,init进程(进程号为1)作为根。 进程0是调度进程,没有程序与之对应,是内核的一部分。 进程1是init进程,是在系统启动的阶段由内核启动的,对应/sbin/init程序,是普通的用...
【linux高级程序设计】(第十三章)Linux Socket网络编程基础 3
使用之前的函数实现的简单聊天程序 TCP协议 双方实时发送/接收消息 实现后的问题: 可能是我虚拟机的IP地址配得有问题吧。在一台电脑上面开两个终端,用127.0.0.1的IP收发可以互通。但是两个虚拟机就不行了,用192.168的IP段,能够ping通但是代码接收不到消息。 还有,两个进程都是...
【原创】《Linux高级程序设计》杨宗德著 - Linux Socket网络编程基础 - 网络通信基础
【原创】《Linux高级程序设计》杨宗德著 - Linux Socket网络编程基础 - 网络通信基础 TCP/IP协议簇 TCP/IP是一组协议的代名词,包括许多别的协议,组成了TCP/IP协议簇。其中比较重要的有SLIP协议、PPP协议、IP协议、ICMP协议、ARP协议、TCP协议、UDP...
【linux高级程序设计】(第十五章)UDP网络编程应用 2
UDP广播通信单播:一对一,TCP和UDP均可完成广播:只能UDP完成。广播时发送方只发送一个数据包,但是网络上的交换机默认转发广播数据包到所有端口。路由器默认不转发任何广播数据包。故广播在局域网范围内。组播:只有UDP可以完成。发送消息到同一个组播组的主机。视频电话、视频会议多采用。广播IP地址:...
【linux高级程序设计】(第十三章)Linux Socket网络编程基础 2
BSD Socket网络编程API 创建socket对象 int socket (int __domain, int __type, int __protocol) :成功返回socket文件描述符,失败返回-1. 参数1:socket对象使用的地址簇或协议簇 常用的有PF_LOC...
【linux高级程序设计】(第十三章)Linux Socket网络编程基础 3
使用之前的函数实现的简单聊天程序 TCP协议 双方实时发送/接收消息 实现后的问题: 可能是我虚拟机的IP地址配得有问题吧。在一台电脑上面开两个终端,用127.0.0.1的IP收发可以互通。但是两个虚拟机就不行了,用192.168的IP段,能够ping通但是代码接收不到消息。 还有,两个进程都是...
【视频】Linux高级程序设计01.3命令行选项及参数
【课程笔记】 【命令行参数】 选项:-l -a -i 参数:-l /home main 函数形式: int main(int argc, char *argv[]) main函数是有参数的,而且有返回值 argc:参数的个数 argv[]:指针数组,存放是具体的参数列表 如 ls -l -a -i ...