随笔分类 - Linux编程基础
讲解企业实战中最重要的Linux编程知识
摘要:[toc] 如果您是非计算机相关专业零基础兄弟,在学习Linux编程基础之前,建议先学习计算机基础、Linux操作系统基础知识和计算机网络基础知识。 计算机基础知识包括了很多常识性的内容,学了不一定有用,但是如果对一些基本常识不了解,可能会闹笑话。 我们学习的目标是成为C/C++程序员,不是Lin
阅读全文
摘要:[toc] 各位兄弟,在学习Linux编程基础之前,一定要先学习Linux基础知识和计算机网络基础知识,如果对这两方面的基础知识和基本概念不熟,谈不上Linux编程和网络通信编程。 一、socket通信的概念 ==================== socket也称作“套接字”,描述了计算机的I
阅读全文
摘要:[toc] book241.cpp和book242.cpp程序已经有点长了,有些啰嗦了,如果还想扩展功能,或用于多进程、多线程,程序结构将非常复杂。 不管是socket通信程序的客户端还是服务端,准备工作的代码又长又难看占地方,影响了主程序的结构,必须分离出来。 如何分离? 封装。 一、C的封装方
阅读全文
摘要:[toc] 一、进程的概念 ============== 什么是进程?进程这个概念是针对系统而不是针对程序员的,对程序员来说,我们面对的概念是程序,当输入指令执行一个程序的时候,对系统而言,它将启动一个进程。 进程就是正在内存中运行中的程序,Linux下一个进程在内存里有三部分的数据,就是“代码段
阅读全文
摘要:[toc] 前面的章节介绍socket通信的时候,socket的服务端在同一时间只能和一个客户端通信,并不是服务端有多忙,而是因为单进程的程序在同一时间只能做一件事情,不可能一边等待客户端的新连接一边与其它的客户端进行通信。 一、并发的服务端 ================ 如果把socket服
阅读全文
摘要:[toc] 进程的数据空间是独立的,私有的,不能相互访问,但是在某些情况下进程之间需要通信来实现某功能或交换数据,包括: 1)数据传输:一个进程需要将它的数据发送给另一个进程。 2)共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。 3)通知事件:一个进程需要向另
阅读全文
摘要:[toc] 一、如何让程序在后台运行 ======================== 在之前的章节中,如果要运行程序,在命令提示行下输入程序名后回车,程序被执行,然后等待程序运行完成,在程序运行的过程中,也可以用Ctrl+c中止它。 在实际开发中,我们需要让程序在后台运行,没有界面,没有用户输入
阅读全文
摘要:[toc] 一、共享内存的概念 ================== 共享内存(Shared Memory)就是允许多个进程访问同一个内存空间,是在多个进程之间共享和传递数据最高效的方式。操作系统将不同进程之间共享内存安排为同一段物理内存,进程可以将共享内存连接到它们自己的地址空间中,如果某个进程
阅读全文
摘要:[toc] 一、信号量的概念 ================ 信号量(信号灯)本质上是一个计数器,用于协调多个进程(包括但不限于父子进程)对共享数据对象的读/写。它不以传送数据为目的,主要是用来保护共享资源(信号量、消息队列、socket连接等),保证共享资源在一个时刻只有一个进程独享。 信号量
阅读全文
摘要:[toc] 一、线程的概念 ============== 和多进程相比,多线程是一种比较节省资源的多任务操作方式。启动一个新的进程必须分配给它独立的地址空间,每个进程都有自己的堆栈段和数据段,系统开销比较高,进行数据的传递只能通过进行间通信的方式进行。在同一个进程中,可以运行多个线程,运行于同一个
阅读全文
摘要:[toc] 一、线程同步的概念 ================== 线程同步?怎么同步?一起运行?一起停止?我当年听说线程同步这个词的时候,也是一头雾水。 在人们的日常生活中的锁大概有两种:一种是不允许访问;另一种是资源忙,同一时间只允许一个使用者占用,其它使用者必须要等待。 1)不允许访问的锁
阅读全文
摘要:[toc] 在C/C++程序中,经常需要调用其它的程序来先成某项任务,例如其它的C/C++程序、操作系统命令或Shell脚本,C/C++提供了exec函数族和system函数来实现这个功能。 一、exec函数族 ============== exec函数族提供了一个在进程中启动另一个程序执行的方法
阅读全文
摘要:[toc] 一、源代码的组织 ================ 我们通常把公用的自定义函数和类从主程序中分离出来,函数和类的声明在头文件中,定义在程序文件中,主程序中要包含头文件,编译时要和程序文件一起编译。 示例(public.h) 示例(public.cpp) 示例(book265.cpp)
阅读全文