时间: 2024-10-17 16:21:24
Linux高级编程(一)
Linux高级编程(一)的相关文章
Linux——高级编程之概要
1.为什么要学习Linux下的高级编程 应用课程的学习,不知道Linux内核的强大功能 Linux下的高级编程课程学习:感知到内核的存在,内核的强大功能 文件管理 进程管理 设备管理 内存管理 网络管理 2.怎么样学习Linux下的高级编程 Linux下高级编程的特点:涉及到内核向用户空间提供的接口(函数) 3.为什么内核要提供这些接口呢 主要原因: A:内核要为应用程序服务,应用程序如果没有内核服务,则功能非常单一 B:内核是一个稳定的代码,同时也要为多个用户空间的程序服务,为了防止用户空间的
Linux高级编程--02.gcc和动态库
在Linux环境下,我们通常用gcc将C代码编译成可执行文件,如下就是一个简单的例子: 小实验:hello.c #include <stdlib.h> #include <stdio.h> void main(void) { printf("hello world!\r\n"); } 可以通过如下指令来编译出一个可执行文件: gcc hello.c 执行完该命令后,就会得到一个a.out的可执行文件. 编译的过程 前面的例子只是简单的介绍了一下gcc的使用方法,
Linux高级编程--05.文件读写
缓冲I/O和非缓冲I/O 文件读写主要牵涉到了如下五个操作:打开.关闭.读.写.定位.在Linux系统中,提供了两套API, 一套是C标准API:fopen.fclose.fread.fwrite.fseek, 另一套则是POSIX定义的系统API:open.close.read.write.seek. 其中POSIX定义的API是系统API,而C标准API是基于系统API的封装,并且提供了额外的缓冲的功能.因此也可以把它们叫做缓冲I/O函数和非缓冲I/O函数. 除了前面介绍的这几个缓冲IO函数
Linux高级编程--01.vi命令
VI是Linux/Unix下标配的一个纯字符界面的文本编辑器.由于不支持鼠标功能,也没有图形界面,相关的操作都要通过键盘指令来完成,需要记忆大量命令.因此很多人不大喜欢它,但同时由于键盘的方式往往比鼠标来得快,一旦熟练后用起来是有种非常流畅的感觉的,也有人因此而非常喜欢它. 不管你喜欢也好,不喜欢也好,VI是Linux的标配编辑器,很多时候你也只有这一个编辑器可用,如果要做一个Linux Coder,熟悉VI还是非常有必要的. PS:由于VI的命令非常多,本文主要只介绍一些基础命令.并且就算是这
Linux高级编程--10.Socket编程
Linux下的Socket编程大体上包括Tcp Socket.Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较多的,而Raw Socket则用得相对较少,不在本文介绍范围之列. TCP Socket 基于TCP协议的客户端/服务器程序的一般流程一般如下: 它基本上可以分为三个部分: 一.建立连接: 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听
linux高级编程补充知识
F: 计算机系统结构: ------------------------------- 应用程序 ----------------- | 库函数 ------------------------------- 系统调用 ------------------------------- 虚拟文件系统 | 进程模块 -(文件模块)-| 进程间通信 设备文件 | ------------------------------- 硬 件 ------------------------
〖Linux〗Linux高级编程 - 进程间通信(Interprocess Communication)
[转自: http://blog.csdn.net/Paradise_for_why/article/details/5550619] 这一章就是著名的IPC,这个东西实际的作用和它的名字一样普及.例如我们浏览网页,打印文章,等等. IPC总共有五种类型: 共享内存(Shared Memory):最容易理解的一种,就像一个特工把情报放在特定地点(内存),另一个特工再过来取走一样. 内存映射(Mapped Memory):和共享内存几乎相同,除了特工们把地点从内存改成了文件系统. 管道(Pipes
Linux高级编程--03.make和makfile
Makefile语法基础 在Linux下,自动化编译工具是通过make命令来完成的(一些工具厂商也提供了它们自己的make命令,如gmake等),make命令的基本格式如下: make [-f makefile] [label] 它可以通过-f参数指定输入文件,当省略-f参数时,默认输入文件名为Makefile,由于我们通常不用这个-f参数,往往就用默认的Makefile文件名. Makefile是一个文本文件,它是基于一定的语法规则的,它的基本执行规则定义如下: target : [prere
Linux高级编程--06.进程概述
进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id.系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数. 进程的状态,有运行.挂起.停止.僵尸等状态. 进程切换时需要保存和恢复的一些CPU寄存器. 描述虚拟地址空间的信息. 描述控制终端的信息. 当前工作目录(Current Working Directory). umask掩码. 文件描述符表,包含很多指向file结构体的指针. 和信号相关的
Linux高级编程--11.信号
基本概念 信号在Linux中是一个比较常见的概念,例如我们按Ctrl+C中断前台进程,通过Kill命令结束进程都是通过信号实现的.下面就以Ctrl+C为例简单的说明信号的处理流程: 用户按下Ctrl-C,这个键盘输入产生一个硬件中断. 该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断. 终端驱动程序将Ctrl-C解释成一个SIGINT信号,记在该进程的PCB中(也可以说发送了一个SIGINT信号给该进程). 当内核返回到该进程的用户空间代码继续执行之前,首先处理PCB中记录的