`
oolala
  • 浏览: 103219 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
09c341db-7f05-3f2b-a572-9ee69a5d8a77
unix环境高级编程
浏览量:22698
社区版块
存档分类
最新评论

Unix系统编程笔记:2、程序、进程、线程

 
阅读更多
1、程序怎么转换成进程
    程序(program)是为了完成特定的任务而准备好的一个指令序列。
 
        c编译器将每个源文件翻译成一个目标文件,然后编译器将这些单个的目标文件同必须的一些库相链接,形成一个可执行模块(executable module),
    程序运行或执行时,操作系统将可执行模块拷贝到主存储器的程序映象(program image)中去。
 
    进程(process)是一个正在执行的程序实例。每个实例都有自己的地址空间和执行状态。
    每个实例都有自己的地址空间和执行状态。
    当操作系统向内核数据结构中添加了适当的信息,并为运行程序代码分配了必要的资源之后,程序就变成了进程。
 
2、线程和执行线程
    程序执行时,由进程程序计数器的值来决定下面该执行哪一条进程指令。得到的指令流被称为执行线程(thread of execution)
 
    线程是代表了进程内执行线程的一种抽象数据类型,线程有自己的执行栈、程序计数器值、寄存器组和状态。
    
3、程序映像的布局
    加载之后,可执行程序看起来占据了一个连续的内存体,这个连续的内存块被称为程序映像
 
4、库函数调用
    必须要处理所有的错误,而不仅仅是那些必须检测的错误
    
    perror输出一个对应error当前值的错误消息
    #include <stdio.h>
    void perror(const char *s);
 
5、函数返回值和错误
    错误处理是编写可靠系统程序中的一个关键问题。
    
    处理unix程序中的错误的标准方法有:
    a)打印出错消息并退出程序
    b)返回-1或NULL,并设置errno这样的错误指示符
    c)返回错误码
 
6、参数数组
    参数数组(argment array)是一个指向字符串的指针数组
    mine -c 10 2.0
    argv[0] = mine
    argv[1] = -c
    argv[2] = 10
    argv[3] = 2.0
    argv[4] = NULL
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

分享到:
评论

相关推荐

    UNIX系统编程学习笔记

    8. **库函数与系统调用**:C语言是UNIX编程的主要语言,系统调用(如上述的`open()`、`write()`等)是直接与内核交互的接口,而库函数(如`stdio.h`中的`printf()`)则提供更友好的编程体验。 9. **网络编程**:...

    UNIX 高级编程 笔记

    ### UNIX高级编程知识点详解 #### 一、课程体系与学习目标概述 - **语言**: 本课程主要聚焦于两种主流的编程语言:C 和 C++。 - **算法**: 学习经典算法及其优化方法,提高解决复杂问题的能力。 - **数据结构**: ...

    unix网络编程读书笔记

    整体来说,这篇读书笔记对 UNIX 网络编程的知识点进行了系统的总结和概括。 1. UNIX 网络编程基础知识 UNIX 网络编程读书笔记首先介绍了 UNIX 网络编程的基础知识,包括 C/S 架构、路由器、inet_addr 函数、read ...

    学习笔记多线程Unix编程

    在深入探讨多线程Unix编程之前,...学习笔记中的内容可能涵盖了以上各个知识点的实例、代码示例和解析,帮助你理解和实践多线程Unix编程。通过不断实践和学习,你将能够熟练地在Unix环境中编写高效的多线程应用程序。

    精通UNIX下C语言编程与项目实践源码与笔记

    4. **进程和线程**:理解UNIX中的进程概念,包括进程创建(`fork`)、进程通信(管道、信号量、消息队列等)以及线程的使用(`pthread`库)。 5. **信号处理**:学习如何使用`signal`函数捕获和处理系统发送的信号...

    UNIX多线程学习笔记

    在UNIX操作系统中,多线程是一种重要的编程模型,它允许多个执行流在单个进程中并发运行。多线程带来了许多优势,包括提高应用程序响应速度,充分利用多CPU系统的资源,以及优化程序结构,使得大型复杂程序更易于...

    Unix-Linux编程实践教程

    这两者的编程接口有很高的相似性,因此学习Unix编程对理解Linux编程也非常有帮助。 本书可能包含以下内容: 1. **shell编程**:讲解Bash shell和其他Unix shell的基本语法,包括命令行参数、环境变量、重定向、...

    APUE读书笔记(Unix高级环境编程)

    - **Unix手册页**:介绍如何使用`man`命令查询Unix/Linux系统中的命令、函数等的文档,是学习Unix编程的重要资料来源。 - **系统调用与库函数**:系统调用是应用程序与操作系统内核之间的接口,库函数则是对系统调用...

    linux 系统编程 尚观 linux内核驱动开发 笔记

    系统编程是指直接与操作系统交互的程序编写,涉及到进程控制、文件操作、网络通信、信号处理等。在Linux环境下,系统编程主要通过调用系统调用来实现。这些调用是操作系统为用户程序提供的接口,例如`open()`用于...

    UNIX网络编程 学习笔记

    在UNIX系统中,`close()`函数的默认行为是将套接字标记为"已关闭",并立即返回给调用线程。套接字描述符不可再用于read或write操作,但TCP会尝试发送任何已排队的未发送数据,然后按照TCP的正常终止流程进行。 `...

    精通UNIX下C语言编程与项目实践+源代码+笔记.zip_C语言项目linux_Linux/Unix编程_Linux下的c语言开

    2. **头文件和预处理器**:在UNIX系统中,C程序经常使用`&lt;stdio.h&gt;`、`&lt;unistd.h&gt;`、`&lt;sys/types.h&gt;`等头文件,它们提供了对操作系统服务的访问。 3. **文件操作**:C语言提供了打开、关闭、读写文件的函数,如`...

    学习《高级Linux环境编程》读书笔记(APUE读书笔记)

    《高级Linux环境编程》或称为APUE(Advanced Programming in the UNIX ...这本书不仅涵盖了UNIX编程的核心概念,还包括了许多实用的编程技巧和解决方案,是一本非常适合在Linux环境下从事系统编程学习的参考书籍。

    pthread笔记&样例程序

    线程是一种轻量级的进程,共享同一进程的内存空间,可以同时执行多个任务,提高程序的运行效率。 **线程创建** 创建线程是使用pthread库的第一步。pthread_create()函数用于创建一个新的线程。该函数接受四个参数:...

    Linux与unix shell编程指南

    - **正常系统调用与内核线程**:这类路径可以被中断,允许睡眠,拥有进程上下文,可以被内核抢占。 - **可延迟函数**:如软中断、内核定时器、tasklets等,可以被中断但不允许睡眠,没有进程上下文,不可被内核抢占...

    APUE读书笔记《UNIX环境高级编程第二版》

    ### APUE读书笔记《UNIX环境高级编程第二版》知识点概览 #### 第一章 Unix基础 **1. Unix手册页** - 手册页是Unix系统中查询命令、函数等帮助文档的方式。 - 分类包括命令(1)、系统调用(2)、库函数(3)、特殊...

    UNIX环境高级编程第二版(高清电子书)

    - **示例代码分析**:书中提供了大量的实际编程示例,覆盖各种UNIX编程场景,帮助读者理解和应用所学知识。 - **调试与故障排查**:教授如何使用调试工具和技巧,高效定位和解决编程过程中遇到的问题。 #### 5. ...

    Unix基础学习笔记

    Solaris作为Unix的一个重要分支,其内核(Kernel)承担着管理设备、内存和进程的重任,同时控制文件系统与硬件系统间的交互,管理交换空间、后台程序等功能。Shell作为人机界面的接口,允许用户与Kernel进行交互,...

Global site tag (gtag.js) - Google Analytics