首页 > 其他分享 >读书笔记1

读书笔记1

时间:2023-09-10 20:34:04浏览次数:43  
标签:可执行文件 文件 读书笔记 编程 C语言 Unix Linux

读书笔记1

20211215卢泽

第一章 - 引言

1.1 系统编程的作用

  • 系统编程的目标是有效地利用系统资源来开发应用软件,并为学生提供扎实的专业基础。

1.2 本书目标

  • 本书旨在强化学生的编程背景知识,并涵盖了以下主题:
    • 动态数据结构的应用
    • 进程概念和进程管理
    • 并发编程
    • 定时器和定时功能
    • 信号、信号处理和进程间通信
    • 文件系统
    • TCP/IP和网络编程

1.3 Unix和Linux

  • Unix系统的多样性,如AT&T Unix、Berkeley Unix、HP Unix、IBM Unix和Sun Unix,通常与特定硬件平台相关。

  • Linux作为一个免费的开源操作系统,为学习和实践系统编程提供了良好的平台,如Debian Linux、Ubuntu Linux、Linux Mint和基于RPM的Linux等发行版。

1.4 在虚拟机上安装和运行Linux

  • 学生可以通过虚拟机软件在Microsoft Windows 10中安装和运行Linux,步骤包括下载安装VirtualBox、创建虚拟机、下载Linux镜像、安装Linux以及调整屏幕分辨率等。

1.5 Unix/Linux文件系统组织

  • 文件系统中包括目录文件、非目录文件(如常规文件和特殊文件,如字符特殊文件和块特殊文件)以及符号链接文件。

1.6 Unix/Linux命令

  • 常见Unix/Linux命令包括ls、cd、pwd、touch、cat、cp、mv、mkdir、rmdir、rm、ln、find、grep、ssh、gzip、gunzip、tar、man、zip和unzip等。

1.7 Ubuntu Linux系统管理

  • 管理用户账户和使用sudo命令来执行特权操作是Ubuntu Linux系统管理的重要部分。

第二章 - 编程背景

2.1 Linux中的文本编辑器

一些常见的Linux文本编辑器包括Vim、Gedit和Emacs,它们在不同的平台上运行,并具有不同的编辑模式和命令。

  • Vim
    操作模式:命令模式、插入模式和末行模式
    插入模式:i:插入文本
    a:追加文本
    末行模式: :w:写入文件
    :q:退出vim
    :wq:保存并退出
    :q!:不保存更改,强制退出

  • Emacs
    File菜单支持打开文件、插入文件和保存文件的操作。

    Edit菜单支持查找和替换操作

    Options菜单支持配置Emacs操作的功能

    Buffers菜单支持缓冲区选择和显示

    Tools菜单支持编译源代码、执行二进制可执行文件和调试。

2.2 程序开发

  • 程序开发的基本步骤包括创建源文件、定义C语言程序变量、使用gcc编译器将源文件转换为可执行文件,并了解gcc的三个主要步骤。

2.3 静态与动态链接

  • 动态链接的优点包括减小可执行文件的大小、允许多个程序共享相同的库函数以及修改库函数不需要重新编译源文件。

2.4 可执行文件格式

  • 可执行文件可以使用不同的格式,如二进制可执行平面文件、a.out可执行文件和ELF可执行文件。

2.5 a.out文件的内容

  • a.out文件包括文件头、代码段、数据段和符号表等组成部分,其中文件头包含有关文件大小和类型的信息。

2.6 程序运行过程

  • 程序的运行过程包括读取a.out文件头、分配内存、执行映像、调用main()函数等步骤。

2.7 Makefile

  • Makefile是一个包含目标项、依赖项和规则的文件,用于构建程序时定义了编译和链接的命令。

2.8 GDB调试工具

  • GDB是一个用于调试程序的工具,可以帮助程序员识别和修复程序中的错误。

2.9 C语言程序中的常见错误

  • 常见的C语言程序错误包括未初始化的指针、数组下标越界、字符串指针和char数组的不当使用等。

2.10 数据结构

  • 数据结构如结构体、链表和树在程序开发中起着重要作用。

2.11 自己的学习收获

  • 自己通过完成虚拟机的安装、Linux的安装以及使用命令行工具实践了第一章中提到的Linux命令,如man、ls、cd、pwd等。这些实践帮助我更好地理解了Unix/Linux系统的基本概念和命令行工具的使用。

这些是第一章和第二章的主要概念和要点,它们将为您提供系统编程和Linux环境的基础知识,以便更深入地学习和实践。


实践截图

Ubuntu下C语言程序编写与运行

创建一个新的C语言源文件(九九乘法表)
`vim chengfabiao.c`
打开vim界面后按i进入写入模式,然后写入代码

输入:wq保存并退出(可以使用wq!强制退出)

进行编译、运行gcc -o chengfabiao.c
图片

emacs试用

输入emacs进入

用emacs打开刚才的九九乘法表

标签:可执行文件,文件,读书笔记,编程,C语言,Unix,Linux
From: https://www.cnblogs.com/lududuze/p/17691841.html

相关文章

  • 《阿里大数据之路》读书笔记:第三章 数据同步
    第三章数据同步数据同步技术含义:不同系统间的数据流转,有多种不同的应用场景。应用场景:同类型不同集群数据库之间的数据同步主数据库与备份数据库之间的数据备份主系统与子系统之间的数据更新不同地域、不同数据库类型之间的数据传输交换大数据系统中的数据同步数据从业务系统同步......
  • 《C++并发编程实战》读书笔记(4):原子变量
    1、标准原子类型标准原子类型的定义位于头文件<atomic>内。原子操作的关键用途是取代需要互斥的同步方式,但假设原子操作本身也在内部使用了互斥,就很可能无法达到期望的性能提升。有三种方法来判断一个原子类型是否属于无锁数据结构:所有标准原子类型(std::atomic_flag除外,因为它......
  • 《C++并发编程实战》读书笔记(2):线程间共享数据
    1、使用互斥量在C++中,我们通过构造std::mutex的实例来创建互斥量,调用成员函数lock()对其加锁,调用unlock()解锁。但通常更推荐的做法是使用标准库提供的类模板std::lock_guard<>,它针对互斥量实现了RAII手法:在构造时给互斥量加锁,析构时解锁。两个类都在头文件<mutex>里声明。std::......
  • 《C++并发编程实战》读书笔记(1):线程管控
    1、线程的基本管控包含头文件<thread>后,通过构建std::thread对象启动线程,任何可调用类型都适用于std::thread。voiddo_some_work();structBackgroundTask{voidoperator()()const;};//空的thread对象,不接管任何线程函数std::threadt1;//传入普通函数std::thr......
  • c++并发编程实战-第2章 线程管控-读书笔记
    线程的基本管控每个应用程序都至少拥有一个线程,即运行main函数的线程,称为主线程,它由c++运行时系统启动。我们可以在软件运行中产生其他线程,它们以指定的函数作为入口函数。当main函数返回后,程序会退出;同样,当入口函数返回后,与之对应的线程结束。发起线程线程是通过构造std::thre......
  • [读书笔记]架构设计原则
    架构设计面向的是不确定性,需要面对多种可能性时进行选择。选择的前提是知识和经验,知识是指有哪些技术、可用组件、实现思路等,这个决定了可选的范围。经验是对当前的业务、情形进行分析,能识别对当前的工作最有效的要素,能从选择空间里做出选择。多学习:扩大可选择的空间和范围多......
  • 读书笔记
    记录一些好的句子,一些自己的感想。《金蔷薇》珍贵的尘土老文学家在他的札记中深有感触地写道:“每一分钟,每一个在无意中说出来的字眼,每一个无心的流盼,每一个深刻的或者戏谑的想法,人的心脏的每一次察觉不到的搏动,一如杨树的飞絮或者夜间映在水洼中的星光—......
  • 数据结构与算法之美读书笔记
    读书笔记链接 时间复杂度分析只关注执行次数最多的一段代码加法法则:总复杂度等于量级最大的那段代码的复杂度乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积 最好、最坏、平均时间复杂度 数组内存中一块连续的存储空间,有效使用CPU的缓存机制,可以很方便......
  • 《深入理解Java虚拟机》读书笔记:方法调用
      方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍、最频繁的操作,但前面已经讲过,Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件......
  • 《深入理解Java虚拟机》读书笔记:运行时栈帧结构
    代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。一、概述在Java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种虚拟机执行引擎的统一外观(Facade)。在不同的虚拟机实现里面,执行引擎在执行Java代码的时......