linux系统编程:自己动手写一个ls命令
ls用于列举目录内容,要实现这个功能,毫无疑问,需要读取目录,涉及到两个api:opendir:DIR*opendir(constchar*name),传文件名,返回一个指针,指向目录序列readdir:structdirent*readdir(DIR*dirp),把opendir的返回值传过来, ...
Linux高并发网络编程开发——10-Linux系统编程-第10天(网络编程基础-socket)
在学习Linux高并发网络编程开发总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。10-Linux系统编程-第10天(网络编程基础-socket)在学习Linux高并发网络编程开发总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注...
Linux系统编程(24)——信号的生命周期
信号生命周期为从信号发送到信号处理函数的执行完毕。对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的一个...
linux系统编程之进程(三):进程复制fork,孤儿进程,僵尸进程
本节目标:复制进程映像fork系统调用孤儿进程、僵尸进程写时复制一,进程复制(或产生) 使用fork函数得到的子进程从父进程的继承了整个进程的地址空间,包括:进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等。子进程...
linux系统编程——信号量相关函数的使用
一、Posix有名信号灯1.posix有名信号灯函数 函数sem_open创建一个新的有名信号灯或打开一个已存在的有名信号灯。有名信号灯总是既可用于线程间的同步,又能用于进程间的同步。1.sem_open名称::sem_open功能:创建并初始化有名信号灯头文件:#include函数原形:sem_...
Linux系统编程——文件描述符的复制:dup()和dup2()
dup()和dup2()是两个非常有用的系统调用,都是用来复制一个文件的描述符,使新的文件描述符也标识旧的文件描述符所标识的文件。这个过程类似于现实生活中的配钥匙,钥匙相当于文件描述符,锁相当于文件,本来一个钥匙开一把锁,相当于,一个文件描述符对应一个文件,现在,我们去配钥匙,通过旧的钥匙复制了一把...
linux系统编程----统计一个目录下的普通文件个数
主要是为了统计linux系统下一个指定目录下面的普通文件个数,运用目录操作的一些函数,配合递归调用来实现该功能。首先介绍一下函数原型:打开一个空目录 DIR*opendir(constchar*name); 参数:目录名 ...
Linux系统编程之----》信号
1"===信号========================================================================================================================"2一.信号的概念:31.本质:4软中端;信号...
linux系统编程之信号(三):信号的阻塞与未决
一、信号在内核中的表示实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号,SIGKILL和SIGSTOP不能被阻塞。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作...
linux系统编程之信号(二):信号处理流程(产生、注册、注销、执行)
对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个阶段:信号诞生信号在进程中注册信号在进程中的注销信号处理函数执行1 信号诞生 信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它硬件故障);软件来源,最常用发送信号的系统函数是kill,raise,...
linux系统编程之信号(三):信号安装、signal、kill,arise讲解
一,信号安装如果进程要处理某一信号,那么就要在进程中安装该信号。安装信号主要用来确定信号值及进程针对该信号值的动作之间的映射关系,即进程将要处理哪个信号;该信号被传递给进程时,将执行何种操作。linux主要有两个函数实现信号的安装:signal()、sigaction()。其中signal()只有两...
linux系统编程之信号(四):信号的捕捉与sigaction函数
本文转自:http://blog.csdn.net/jnu_simba/article/details/8947410一、内核如何实现信号的捕捉如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下:1.用户程...
Linux系统编程——文件描述符的复制:dup()和dup2()
dup()和dup2()是两个非常有用的系统调用,都是用来复制一个文件的描述符,使新的文件描述符也标识旧的文件描述符所标识的文件。这个过程类似于现实生活中的配钥匙,钥匙相当于文件描述符,锁相当于文件,本来一个钥匙开一把锁,相当于,一个文件描述符对应一个文件,现在,我们去配钥匙,通过旧的钥匙复制了一把...
Linux系统编程之命名管道与共享内存
在上一篇博客中,我们已经熟悉并使用了匿名管道,这篇博客我们将讲述进程间通信另外两种常见方式——命名管道与共享内存。1.命名管道管道是使用文件的方式,进行进程之间的通信。因此对于管道的操作,实际上还是用诸如write,read等接口实现。匿名管道应用的一个限制就是只能在具有亲缘关系(如父进程与子进程、...
Linux系统编程(22)——响应信号
进程对信号的响应进程可以通过三种方式来响应一个信号:1、忽略信号,即对信号不做任何处理,其中,有两个信号不能忽略:SIGKILL及SIGSTOP;2、捕捉信号。定义信号处理函数,当信号发生时,执行相应的处理函数;3、执行缺省操作,Linux对每种信号都规定了默认操作。注意,进程对实时信号的缺省反应是...
linux系统编程之信号(四):信号的捕捉与sigaction函数
一、内核如何实现信号的捕捉如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下:1.用户程序注册了SIGQUIT信号的处理函数sighandler。2.当前正在执行main函数,这时发生中断或异常切换到内核态...
linux系统编程之信号(五):实时信号与sigqueue函数
一、sigqueue函数功能:新的发送信号系统调用,主要是针对实时信号提出的支持信号带有参数,与函数sigaction()配合使用。原型:intsigqueue(pid_tpid,intsig,constunionsigvalvalue);参数:sigqueue的第一个参数是指定接收信号的进程id,...
与信号相关的linux系统编程API
1.kill(pid_tpid,intsig);//给指定的进程发送sig信号 raise(intsig);//给当前进程发送sig信号2.处理指定的信号 typedefvoid(*sighandler_t)(int); sighandler_t signal(int signum, sig...
16、【Linux系统编程】信号详解
信号的基本概念每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到。使用kill-l命令查看系统中定义的信号列表:1-31是普通信号;34-64是实时信号所有的信号都由操作系统来发!对信号的三种处理方式1、忽略此信号:大多数信号都可使用这种方式进行处理,但有两种信号却决不能被...
linux系统编程之信号(五):实时信号与sigqueue函数
一、sigqueue函数功能:新的发送信号系统调用,主要是针对实时信号提出的支持信号带有参数,与函数sigaction()配合使用。原型:intsigqueue(pid_tpid,intsig,constunionsigvalvalue);参数: sigqueue的第一个参数是指定接收信号的进程id...