《Linux程序设计》第4版 核心笔记

来源:互联网 发布:上海数据交易中心官网 编辑:程序博客网 时间:2024/05/17 23:17
【前言】
读本书的学习目标:
1. 掌握标准linux C语言函数库和个中linux或unix标准指定的其他工具的使用方法
2. 掌握如何使用大多数标准linux开发工具
3. 学会通过DBM和MySQL数据库系统存储Linux中的数据
4. 理解如何为X视窗系统建立图形用户界面,同时使用GTK和Qt函数库
5. 拥有开发自己的实际应用程序的信心和能力

一个贯穿全书的大型示例项目:
一个简单的用于记录音乐CD详细资料的数据库应用程序。

文件操作、从linux环境中获取信息、处理终端的输入输出、curses函数库

GTK+工具包:是GNOME开发环境的基础;
Qt工具包:是KDE开发环境的基础。

本书所有源代码下载地址:
http://www.wrox.com/WileyCDA/WroxTitle/Beginning-Linux-Programming-4th-Edition.productCd-0470147628,descCd-DOWNLOAD.html

【第一章:入门】

Linux:GNU/Linux
GNU项目自由软件官网:http://www.gnu.org
linux实际是一个内核,在内核上安装许多自由发布的软件,从而完成一个linux系统。
linux程序设计,就是C语言编程。
linux程序包含两种特殊类型的文件:可执行文件、脚本文件。
系统级的应用程序,可以放在目录:/usr/local/ 目录中来运行和访问所需的文件。
对于开发用和个人的应用程序,最好在家目录中使用一个文件夹来存放它。
系统提供的头文件都位于:/usr/include/ 目录下。
    $:' grep EXIT_ /usr/include/*.h
    //在/usr/include/目录下所有以.h结尾的文件中搜索字符串EXIT_
库,是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。
标准系统库文件存放于:/lib/ 或 /usr/lib/ 下。
静态库:一组处于“准备好使用”状态的目标文件。必须使用 -l 选项指明除标准C语言运行库以外还需要使用的库。
静态库,也称作归档文件,文件名都以 .a 结尾。
静态库制作
    $:' gcc -c *.c
    // 创建目标模块.o文件
    $:' ar -crv *.o libfoo.a
    // 创建foo静态库文件libfoo.a
    $:' ranlib libfoo.a
    // linux下ranlib不是必须操作,做了也无妨。(是为衍生的unix系统生成内容表)
    $:' gcc -o program program.o -L. -lfoo
    // -L选项告诉编译器库文件的位置;-l选项告诉编译器是哪个静态库
共享库即动态库,程序本身不包含函数代码,引用运行时才访问共享代码的库文件。
    $:' ldd program
    // ldd命令查看程序锁需要的共享库文件
man命令,用来访问在线手册页。
    $:' man gcc
    // space空格键读下一页,enter回车键读下一行,q键退出。
    // f键下一屏,b键上一屏。
info命令,在GNU软件和其他一些自由软件中的在线文档系统。通过链接和交叉引用来浏览文档并可以直接跳转相关的章节。
    $:' info gcc
    // Ctrl+H可以看到info的操作指南


【第二章:shell程序设计】
shell执行shell程序,这些程序通常称为 脚本 ,运行时是解释执行的。
    $:' ls -al | more
    // ls和more命令,通过管道实现了文件列表的分屏显示。
    $:' man bash | col -b | lpr
    // bash信息进行显示和打印
重定向输出:
    $:' ls -l > lsoutput.txt
    // 把ls命令的输出结果保存到文件lsoutput.txt中
    $:' ps >> lsoutput.txt
    // 把ps命令的输出结果附加到文件lsoutput.txt中
    $:' kill -l 1234 >killouterr.txt 2>&1
    // 将标准输出重定向到文件killouterr.txt中,然后讲标准错误输出重定向到与标准输出相同的地方
重定向输入:
    $:' more < killouterr.txt
    // linux下重定向输入的话意义不大
管道:
    $:' ps -xo comm | sort | uniq | grep -v sh | more
    // 首先按字母顺序排序ps命令的输出,再用uniq命令去除名字相同的进程,然后用grep -v sh命令删除名为sh的进程,最终将结果分页显示在屏幕上
shell的语法:
    变量:=赋值,两边不能有空格
    // 使用read命令将用户输入的值赋值给一个变量
    环境变量:$HOME  $PATH  $PS1  $PS2  $IFS  $0  $#  $$
    参数变量:$1,$2,...  $*  $@
    条件:test 或 [ ]
    控制结构:
        if语句
        if [ condition ]
        then
            statements
        else
            statements
        fi

        elif语句(else if)
/* if脚本例子 */#!/bin/shecho "Is it morning? Please answer yes or no"read timeofdayif [ $timeofday = "yes" ]; then    echo "Good morning"else    echo "Good afternoon"fiexit 0/* ----------- */

    echo -e 可以实现每一行后面的换行符。
    for语句
    for variable in values
    do
        statesments
    done

/* for脚本例子 */#!/bin/shfor file in $(ls *); do    echo $filedoneexit 0/* ----------- */

    while语句
    while condition do
        statesments
    done

/* while脚本例子 */#!/bin/shecho "Enter passwd"read trythiswhile [ "$trythis" != "secret" ]; do    echo "Sorry, try again..."    read trythisdoneecho "success..."exit 0/* ----------- */



...更多内容详见 《linux程序设计》第4版.pdf

0 0
原创粉丝点击