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
相关推荐
8. **库函数与系统调用**:C语言是UNIX编程的主要语言,系统调用(如上述的`open()`、`write()`等)是直接与内核交互的接口,而库函数(如`stdio.h`中的`printf()`)则提供更友好的编程体验。 9. **网络编程**:...
### UNIX高级编程知识点详解 #### 一、课程体系与学习目标概述 - **语言**: 本课程主要聚焦于两种主流的编程语言:C 和 C++。 - **算法**: 学习经典算法及其优化方法,提高解决复杂问题的能力。 - **数据结构**: ...
整体来说,这篇读书笔记对 UNIX 网络编程的知识点进行了系统的总结和概括。 1. UNIX 网络编程基础知识 UNIX 网络编程读书笔记首先介绍了 UNIX 网络编程的基础知识,包括 C/S 架构、路由器、inet_addr 函数、read ...
在深入探讨多线程Unix编程之前,...学习笔记中的内容可能涵盖了以上各个知识点的实例、代码示例和解析,帮助你理解和实践多线程Unix编程。通过不断实践和学习,你将能够熟练地在Unix环境中编写高效的多线程应用程序。
4. **进程和线程**:理解UNIX中的进程概念,包括进程创建(`fork`)、进程通信(管道、信号量、消息队列等)以及线程的使用(`pthread`库)。 5. **信号处理**:学习如何使用`signal`函数捕获和处理系统发送的信号...
在UNIX操作系统中,多线程是一种重要的编程模型,它允许多个执行流在单个进程中并发运行。多线程带来了许多优势,包括提高应用程序响应速度,充分利用多CPU系统的资源,以及优化程序结构,使得大型复杂程序更易于...
这两者的编程接口有很高的相似性,因此学习Unix编程对理解Linux编程也非常有帮助。 本书可能包含以下内容: 1. **shell编程**:讲解Bash shell和其他Unix shell的基本语法,包括命令行参数、环境变量、重定向、...
- **Unix手册页**:介绍如何使用`man`命令查询Unix/Linux系统中的命令、函数等的文档,是学习Unix编程的重要资料来源。 - **系统调用与库函数**:系统调用是应用程序与操作系统内核之间的接口,库函数则是对系统调用...
系统编程是指直接与操作系统交互的程序编写,涉及到进程控制、文件操作、网络通信、信号处理等。在Linux环境下,系统编程主要通过调用系统调用来实现。这些调用是操作系统为用户程序提供的接口,例如`open()`用于...
在UNIX系统中,`close()`函数的默认行为是将套接字标记为"已关闭",并立即返回给调用线程。套接字描述符不可再用于read或write操作,但TCP会尝试发送任何已排队的未发送数据,然后按照TCP的正常终止流程进行。 `...
2. **头文件和预处理器**:在UNIX系统中,C程序经常使用`<stdio.h>`、`<unistd.h>`、`<sys/types.h>`等头文件,它们提供了对操作系统服务的访问。 3. **文件操作**:C语言提供了打开、关闭、读写文件的函数,如`...
《高级Linux环境编程》或称为APUE(Advanced Programming in the UNIX ...这本书不仅涵盖了UNIX编程的核心概念,还包括了许多实用的编程技巧和解决方案,是一本非常适合在Linux环境下从事系统编程学习的参考书籍。
线程是一种轻量级的进程,共享同一进程的内存空间,可以同时执行多个任务,提高程序的运行效率。 **线程创建** 创建线程是使用pthread库的第一步。pthread_create()函数用于创建一个新的线程。该函数接受四个参数:...
- **正常系统调用与内核线程**:这类路径可以被中断,允许睡眠,拥有进程上下文,可以被内核抢占。 - **可延迟函数**:如软中断、内核定时器、tasklets等,可以被中断但不允许睡眠,没有进程上下文,不可被内核抢占...
### APUE读书笔记《UNIX环境高级编程第二版》知识点概览 #### 第一章 Unix基础 **1. Unix手册页** - 手册页是Unix系统中查询命令、函数等帮助文档的方式。 - 分类包括命令(1)、系统调用(2)、库函数(3)、特殊...
- **示例代码分析**:书中提供了大量的实际编程示例,覆盖各种UNIX编程场景,帮助读者理解和应用所学知识。 - **调试与故障排查**:教授如何使用调试工具和技巧,高效定位和解决编程过程中遇到的问题。 #### 5. ...
Solaris作为Unix的一个重要分支,其内核(Kernel)承担着管理设备、内存和进程的重任,同时控制文件系统与硬件系统间的交互,管理交换空间、后台程序等功能。Shell作为人机界面的接口,允许用户与Kernel进行交互,...