文章目录一、进程的基本知识1.进程控制块PCB2.系统调用fork和exec简介二、环境变量1.进程地址空间2.环境变量表也是一组字符串3.全局变量environ指向环境变量表,用environ指针可以查看所有环境变量字符串4.重要的环境变量:PATH,SHELL,TERM,LANG,HOME(2)getenv函数,setenv函数,unsetenv函数三、进程控制1.fork函数一、进
原创
2023-03-12 14:37:28
112阅读
前一段时间对文件I/O的基本操作基本操作做了总结,今天这里继续按照我的理解对linux系统编程的进程操作进行总结。首先我们先理解几个概念:程序、进程、线程。 所谓程序,就是计算机指令的集合,它以文件的形式存储在磁盘上,进程是一个程序在其自身的地址空间中的一次执行活动。而线程进程内的一个执行单元,也是进程
原创
2018-02-12 12:48:33
5335阅读
点赞
1.打开文件的函数open,第一个参数表示文件路径名,第二个为打开标记,第三个为文件权限 代码: 效果测试:打印打开文件返回的描述符为3,同时创建了文件testopen1 2.创建文件函数creat和关闭函数close 使用代码 测试结果: 3.写文件函数write,第一个参数表示要写入的文件的描述
原创
2021-09-04 16:41:51
279阅读
今天继续学习信号,主要是学习关于时间和定时器相关的函数的使用,关于这个实际上有很多内容,这里先简要进行说明,等之后再慢慢进行相关深入,也主要是为接下来要做的一个综合linux系统编程的例子做准备,好了,进入正题:三种不同精度的睡眠:关于这个函数,实际上已经在之前使用过了,具体可以参考博文:http:...
原创
2014-06-01 10:03:00
165阅读
今天继续探讨信号相关的东东,话不多说,正入正题:信号在内核中的表示:下面用图来进一步描述这种信号从产生到递达之间的状态(信号阻塞与未诀):那是怎么来决定的呢?下面慢慢来举例分解:所以,通过这些图,可以描述信号从产生到递达的一个过程,上面的理解起来可能有点难,下面会用代码来进一步阐述,在进行实验之前,...
原创
2014-05-25 15:02:00
224阅读
之后,子进程复制了父进程当中的大部分数据,其中对于打开的文件,如果父进程打开了,子进程则不需要打开了,是共享的,所以首先先来研究下共享文件这一块的东东: fork之后父子进程共享文件: 首先先通过其原理图来了解一下什么是父子进程共享文件: 父进程...
原创
2014-01-05 13:24:00
118阅读
概述在Linux系统中,文件操作是一项基本而又重要的任务,主要依赖于系统调用。系统调用是操作系统提供的底层接口,允许用户程序直接与内核进行通信。常用的文件操作包括:打开文件、关闭文件、读取文件、写入文件、文件定位等。下面,我们分别进行介绍。打开文件open函数用于打开或创建文件,并设置相应的访问模式和权限。其函数原型如下。int open(const char *pathname, int fla
概述目录遍历是指以递归或循环方式,逐个访问文件系统中的文件和子目录,这通常用于实现文件搜索、备份工具、同步服务等功能。为了有效地遍历目录,Linux提供了多种方法,最常见的是:readdir和scandir。下面,我们将分别进行介绍。readdirreaddir函数通常与opendir、closedir结合使用,以遍历某个目录中的所有条目。每次调用readdir时,会返回下一个条目,直到没有更多条
介绍了用exec函数替换进程映像的用法,今天将来深入学习exec及它关联的函数,话不多说,正式进入正题: exec替换进程映象: 对于fork()函数,它创建了一个新进程,新进程与原进程几乎是一样的,而对于shell命令,如: 对于shell命令,它本...
原创
2014-01-06 21:41:00
119阅读
今天继续对信号进行研究,话不多说,言归正传:更多信号发送函数:
上节中我们已经接触到了一些信号的发送函数,这里更进一步学习一下其它的发送函数:
alarm:只能发送SIGALRM信号下面通过一个例子来介绍这个函数:
#include <unistd.h>#include <sys/stat.h>#include <sys/wait.h>#include
原创
2014-05-21 22:29:00
120阅读
经过了漫长的间歇,对于c语言的学习也被中断了很久,现实确实有很多的无耐,计划中的事情总会被打乱,但不管怎样,学习的道路是不能休止的,所以经过了一断温习后现在继续学习C语言,话不多说,进入正题:信号分类可靠信号与不可靠信号不可靠信号:linux信号机制基本上是从unix系统中继承过来的。早期unix系...
原创
2014-01-18 21:38:00
214阅读
今天继续研究进程相关的东东,话不多说,进入正题: SIGCHLD: 关于它,之前章节的学习中已经用到了,具体可以参考博文:http://www.cnblogs.com/webor2006/p/3500972.html,这里会进一步来理解它: 【说明:关于信号,很快就会有一个专题来仔细研究它,现在...
原创
2014-01-09 20:53:00
140阅读
概述在Linux系统中,通过创建新的进程,我们可以实现多任务处理、并发执行和资源隔离等功能。创建进程的主要方法为:fork、vfork、clone。下面,我们将分别进行介绍。forkfork是最常用的创建新进程的方法。当一个进程调用fork时,系统会创建一个新的子进程。子进程是调用进程(即父进程)的一个精确副本,但它有自己的独立内存空间、文件描述符等资源。fork使用写时拷贝技术,以推迟或避免不必
概述在Linux系统中,文件系统是组织和管理数据的关键组件,而目录则是文件系统的骨架。目录本质上是一个特殊的文件,包含了指向其他文件或目录的链接。每个目录都有一个唯一的inode号,用来标识它在文件系统中的位置。目录可以包含普通文件、其他目录(子目录)、符号链接、其他类型的文件(比如:设备文件等)。创建目录创建目录是一项基本任务,可以通过mkdir函数来实现。其函数原型如下。int mkdir(c
概述在多线程编程中,线程同步是确保多个线程能够安全、高效协作的关键。当多个线程访问共享资源时,如果不加以控制,可能会导致不一致的状态或错误的行为。比如:两个线程同时尝试修改同一个变量,可能导致其中一个修改被覆盖,或者产生未定义的结果。为了避免这些问题,我们需要引入同步机制来协调线程之间的操作顺序,确保每次只有一个线程可以访问特定的资源。互斥锁互斥锁是最基本也是最常用的线程同步工具之一。它允许一次只
的安装函数sigaction函数就出现了,它的原形如下:sigaction结构体:通过man手册来...
原创
2014-05-26 22:00:00
173阅读