![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux系统编程
无夜之凛冬
这个作者很懒,什么都没留下…
展开
-
Linux系统编程——文件I/O操作
一 非缓冲文件操作针对于小规模文件的读写,或者是实时设备,例如调制解调器、连接于串口的工业设备。执行非缓冲文件操作后,应用程序将立即获取或传送数据。3个操作系统预先分配的文件标识符0:标准输入,即通过终端输入1:标准输出,即通过终端输出2:标准错误,系统中存放错误信息的堆栈1.使用read()读取文件read()函数用于从文件中将信息读取到指定的内存区域中。一般形式为:read...原创 2019-02-28 16:47:24 · 1191 阅读 · 0 评论 -
Linux系统编程——网络编程基础(一)
一 计算机网络的组成1.网络结构根据局域网的组成形式,可以将局域网分为星型网络、环状网络和总线网络3种基本网络结构。各种网络优缺点环状网络:优点:使计算机容易协调使用以及容易检测网络是否正确运行缺点:如果其中两根线断掉,整个网络失效星型网络:优点:保护网络不受某一根电缆损坏的影响总线网络:所需布线比星型网络少,和环状网络有一样的缺点2.OSI参考模型开放...原创 2019-03-12 21:33:28 · 746 阅读 · 0 评论 -
Linux系统编程——网络编程基础(三)
四 网络通信若在网络中,需要使客户端连接的地址为一个有效的IP地址,这样就能在两台计算机之间通信。除IP地址外,计算机名也可用来代表一台网络中的计算机。1.查询主机名称通过访问主机数据库实现的。服务器数据库接口函数在头文件netdb.h中定义。与此相关的函数有gethostbyaddr()和gethostbyname()两个,一般形式如下:struct hostent* gethostby...原创 2019-03-17 18:37:12 · 119 阅读 · 0 评论 -
Linux系统编程——线程控制(二)
2.用互斥量同步互斥量的作用犹如给某个对象加上一把锁,每次只允许一个线程去访问它。如果想对代码关键部分的访问进行控制,可以在进入这段代码之前锁定一个互斥量,完成操作后再解开它。使用互斥量要用到的基本函数如下:int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *mutexattr);int pthre...原创 2019-03-11 22:26:33 · 151 阅读 · 0 评论 -
Linux系统编程——网络编程基础(二)
三 Socket套接字目的:将TCP/IP协议相关软件移植到UNIX类系统中。与套接字相关的函数被包含在头文件sys/socket.h中1.Socket套接字简介任何用户在通信之前,首先要申请一个Socket号,同时要知道对方的Socket号。向对方发出请求时,对方主机如果开机且可以接受连接请求,则双方可通话。Socket的通信机制与电话交换机制非常相似。Socket实质上提供了进程通信...原创 2019-03-14 11:02:40 · 165 阅读 · 0 评论 -
Linux系统编程——进程控制(二)
二 进程的基本操作相关的函数被定义在系统调用库unistd.h中。1.fork系统调用fork系统调用有两个函数,分别是fork()和vfork()函数。可创建一个子进程,调用的一般形式是:pid_t fork(void);pid_t vfork(void);pid_t:用于保存进程PID信息的结构体调用成功时,对父进程返回子进程PID,对子进程返回0。调用失败时返回-1,子进程...原创 2019-03-04 13:41:43 · 229 阅读 · 0 评论 -
Linux系统编程——线程控制(一)
一 线程的基本概念线程是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描述符和信号处理。操作系统在两个进程间进行切换时,要对前一个进程进行保护现场操作,对后一个进程进行还原现场操作。反复进行上下文切换会带来极大的开销。线程则无需进行上下文切换,因为多个线程共享同一个进程的上下文。多个线程也共享同一个进程的CPU时钟周期,进程的状态并未因线程切换而改变。二线程的实现1.用户...原创 2019-03-06 14:24:56 · 470 阅读 · 0 评论 -
Linux系统编程——进程间通信(一)
Linux系统主要的进程间通信机制如下:无名管道(Pipe)及命名管道(Named pipe):无名管道可用于具有父子关系进程间的通信;命名管道用于无父子关系的进程之间的通信。无父子关系的进程可将信息发送到某个命名管道中,通过管道名读取信息信号(Signal):进程间的高级通信方式,用于通知其他进程有何种事件发生。此外,进程可以向自身发送信号,还可获得Linux内核发出的信号。报文(Mes...原创 2019-03-05 21:44:46 · 657 阅读 · 0 评论 -
Linux系统编程——进程控制(一)
一 进程的基本概念查看进程信息命令ps,参数如下:-e:列出所有进程-f:显示进程全部信息-h:不现实进程标题列出所有进程-l:以长格式显示进程-w:以宽格式显示进程-a:显示终端上所有进程,包括其他用户进程-r:只显示正在运行的进程-x:显示没有控制终端的进程进程的状态和状态转换进程在生存周期中呈现出各种状态及状态的转换,这些信息反映了进程获取系统资源的情况。Linux...原创 2019-03-02 20:48:09 · 264 阅读 · 0 评论 -
Linux系统编程—文件操作
文件的属性与权限1.文件的权限与属性(1)管理文件的权限命令:chmodchmod [ugoa] [[+/-/=] [rwx]...] [文件名1...]u:所有者g:所属组o:其他人a:以上三者都有+:增加权限-:取消权限=:唯一审定权限2.文件管理三种常用实现途径:直接进行文件系统底层操作通过调用shell程序借助系统调用实现(1)系统调用(2)...原创 2019-02-26 15:43:41 · 271 阅读 · 0 评论 -
Linux系统编程——进程控制(三)
三 进程的特殊操作1.获得进程ID进程的ID种类如下:PID:进程编号UID:创建进程的用户信息EUID:创建进程的用户对进程所属可执行文件的操作权限信息GID:创建进程的用户所属组信息EGID:标识进程目前所属用户组PGID:标识进程组信息获得进程的GID:gid_t getgid(void);gid_t getgid(void);获得进程的PID:pid_t g...原创 2019-03-05 14:06:43 · 371 阅读 · 0 评论 -
makefile小练习
练习内容C++写工厂模式代码,头文件和源文件分开C++写客户端测试程序使用make,将工厂模式编译为动态链接库,客户端程序编译为可执行文件使用Ubuntu操作系统,用vim写代码。结构图完成的内容如下图所示:application:最终生成的可执行文件include:存放头文件的文件夹lib:存放动态链接库的文件夹main.cpp:客户端程序src:存放源代码的文件夹...原创 2019-06-23 22:36:29 · 505 阅读 · 0 评论