进程控制开发[fork() exec exit _exit wait waitpid 守护进程]

操作系统原理实验:进程创建与退出的常用系统调用(fork、exec、getpid、waitpid、exit) 实验目的: 熟悉类UNIX系统的常用系统调用fork(), exec(), exit()等,体会并理解类UNIX操作系统创建进程的机制。 通过进程的创建、撤销和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。通过本实验提高分析问题和解决问题的能力,并学习撰写规范的科学研究报告。 实验内容: (1)了解系统调用fork(), exec(), exit()等功能和实现过程; (2)编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符某字符串和自己的标识数,而子进程则重 阅读详情

第七章 进程控制开发[fork() exec exit _exit wait waitpid 守护进程]

转:http://www.cnblogs.com/jimwind/archive/2012/12/26/2834147.html

前言:

1、fork 创建一个子进程,有两个返回值。返回0为子进程,返回大于0为父进程。

2、exec 运行新的可执行文件,取代原调用进程的数据段、代码段和堆栈段。一般是运行fork后,在子进程中执行exec。

3、exit(0)和_exit(0):exit(0)会先清理I/O缓冲后再调用系统exit,而_exit(0)是直接调用系统exit

4、wait函数是用于使父进程(也就是调用wait的进程)阻塞,直到一个子进程结束或者该进程接到了一个指定的信号为止。如果该进程没有子进程或者他的子进程已经结束,则wait就会立即返回。

5、守护进程使用在android的system下面,如netd,vold等。

====================================================================

7.1.1 Linux 进程相关基本概念

进程是一个程序的一次执行的过程。程序是静态的,进程是动态的,包括动态创建、调试和消亡的整个过程。

2、进程控制块

进程是Linux系统的基本调度单位,系统通过进程控制块描述并表示它的变化。

进程控制块包含了进程的描述信息、控制信息以及资源信息,它是进程的一个静态描述。

在Linux中,进程控制块中的每一项都是一个task_struct结构,它是在include/linux/sched.h中定义的。

3.进程的标识

进程号(PID, Process Idenity Number)   和  父进程号(PPID, parent process ID)

在Linux中获得当前进程的PID和PPID的系统调用函数为getpid和getppid,

用户和用户组标识、进程时间、资源利用情况等。

4.进程运行的状态 进程是程序的执行过程,根据它的生命期可以划分成3种状态

执行态/就绪态/等待态

 

7.1.2 Linux下的进程结构

Linux中的进程包含3个段,分别为“数据段”、“代码段”和“堆栈段”。

数据段存放的是全局变量、常数以及动态数据分配的数据空间(如malloc函数取得的空间)等。

代码段存放的是程序代码数据。

堆栈段存放的是子程序的返回地址、子程序的参数以及程序的局部变量。

在Linux系统中,进程的执行模式划分为用户模式和内核模式。

如果用户程序执行过程中出现系统调用或者发生中断事件,就要运行操作系统程序,变成内核模式。

7.1.4 Linux下的进程管理

进程管理分为启动进程和调度进程。

1.启动进程 

主要有两种途径:手工启动和调度启动。手工启动是由用户输入命令直接启动进程,而调度启动是指系统根据用户的设置自行启动进程。

(1)手工启动进程又可分为前台启动和后台启动。

前台启动是手工启动一个进程的最常用方式。一般地,当用户键入一个命令如"ls -l"时,就已经启动了一个进程,并且是一个前台进程。

后台启动往往是在该进程非常耗时,且用户也不急着需要结果的时候启动的。比如格式化文本文件的进程。

(2)调度启动

费时且占用资源的维护工作,并且在深夜无人职守的时候进行,用户可以事先进行调度安排,指定任务运行的时间或者场合。

使用调度启动进程有几个常用的命令,如at命令在指定时刻执行相关进程,cron命令可以自动周期性的执行相关进程。

2.调度进程

调度进程包括对进程的中断操作、改变优先级、查看进程状态等。

ps | top | nice | renice | kill | crontab | bg

 

======================================================================

7.2 Linux进程控制编程

进程创建

1. fork()

pid_t fork(void);

在Linux中创建一个新进程的惟一方法是使用fork函数。它执行一次却返回两个值。

(1) fork函数说明

fork函数用于从已存在进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。

这两个分别带回它们各自的返回值,其中父进程的返回值是子进程的进程号,而子进程则返回0。因此,可以通过返回值来判断该进程是父进程还是子进程。

复制代码
#include<sys/types.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>

int main(void){
    pid_t result;

    result = fork();
    if(result == -1){
      perror("fork");
      exit(1);
    } else if(result == 0){
      printf("The return value is 0,In child process!! My PID is %d\n",getpid());
    } else {
      printf("The return value is %d, In father process !! My PID is %d\n", result, getpid());
    }
}
复制代码

 

(4)函数使用注意点

2. exec函数族

(1)exec函数族说明

fork函数用于创建一个子进程,该子进程几乎copy了父进程的全部内容,但是这个新创建的进程如何执行呢?

这个exec函数族就提供了一个在进程中启动另一个程序执行的方法,它可以根据指定的文件名或目录名找到可执行文件。

在Linux中使用exec函数族主要有两种情况:

*当进程认为自己不能再为系统和用户做出任何贡献时,就可以调用任何exec函数族让自己重生

*如果一个进程想执行另一个程序,那么它就可以调用fork函数新建一个进程,然后调用任何一个exec,这样看起来就好像通过执行应用程序而产生一个新进程。(这种情况非常普遍)

(2)exec函数族语法 函数族里有6个以exec开头的函数

int execl(const char *path, const char *arg, ...)

int execv(const char *path, char * const argv[])

int execle(const char *path, const char *arg, ..., char * const envp[])

int execve(const char *path, char * const argv[], char * const envp[])

int execlp(const char *file, const char *arg, ...)从环境变量$PATH所指出的路径中进行查找

int execvp(const char *file, char * const argv[])从环境变量$PATH所指出的路径中进行查找

参数传递方式有两种:一种是逐个列举的方式,另一种是将所有参数整体构造指针数组传递。

字母为“l"(list)的表示逐个列举,其语法为char *arg;字母为"v"(vector)的表示将所有参数整体构造指针数组传递,其语法为*const argv[]。

(3)使用实例

复制代码
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main(){
    if(fork() == 0){ 
        /*call execlp, just like call "ps -ef"*/
        if(execlp("ps","ps","-ef",NULL) < 0)
            perror("execlp error!");
    }   
}
复制代码
execl
execle
execve

 

3.exit和 _exit

(1)函数说明,exit和_exit函数都是用来终止进程的,进程会无条件的停止剩下的所有操作。

但这两个函数还是有区别的

_exit() 直接调用 exit系统调用

exit()->调用退出处理函数->清理I/O缓冲->调用exit系统调用

若想保证数据的完整性,就一定要使用exit()函数,因为程序处理数据有缓冲区。

由于printf函数使用的缓冲I/O方式,该函数在遇到"\n"换行符时自动从缓冲区中将记录读出。

如果没有"\n",exit(0)能从缓冲区读出,而_exit(0)则不能。

 

4. wait 和 waitpid

(1)wait和waitpid函数说明

wait函数是用于使父进程(也就是调用wait的进程)阻塞,直到一个子进程结束或者该进程接到了一个指定的信号为止。

如果该进程没有子进程或者他的子进程已经结束,则wait就会立即返回。

waitpid的作用和wait一样,但它并不一定要等待第一个终止的子进程,它还有若干选项。wait只是waitpid的一个特例

(2)wait和waitpid函数格式说明

pid_t wait(int *status)

pid_t waitpid(pid_t pid, int *status, int options) 

(3) waitpid使用实例

本例中首先使用fork()新建一子进程,然后让其子进程暂停5s,接下来对原有的父进程使用waitpid函数,并使用参数WNOHANG使该父进程不会阻塞。若有子进程退出,则waitpid返回子进程号;若没有子进程限出,则waitpid返回0,并且父进程每隔一秒循环判断一次。

waitpid

 

7.3 Linux守护进程

1.创建子进程,父进程退出

pid = fork();

if(pid>0)

    exit(0);父进程退出了。

子进程变成了孤儿进程,会自动由1号进程(也就是init进程)收养它。这样,原先的子进程就会变成init进程的子进程了。

 

2.在子进程中创建新会话

pid_t setsid(void)

进程组:进程组是一个或多个进程的集合。进程组由进程组ID来惟一标识。除了进程号PID之后,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID,且该进程ID不会因组长进程的退出而受到影响。

会话期:会话组是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话期,它们之间的关系如下图所示。

setsid函数作用:

setsid函数用于创建一个新的会话,并担任该会话组的组长。

让进程摆脱原会话的控制。让进程摆脱原进程组的控制。让进程摆脱原控制终端的控制。

 

由于调用fork函数时,子进程全盘拷贝了父进程的会话期、进程组控制终端等,虽然父进程退出了,但原先的会话期、进程组、控制终端等并没有改变。

3.改变当前目录为根目录

让"/"作为守护进程的当前工作目录。常见函数为chdir

4.重设文件权限掩码 

umask(0)

5.关闭文件描述符

for(i = 0; i<MAXFILE; i++)

  close(i);

dameon

 

7.3.3 守护进程的出错处理

gdb是通过输出错误信息到控制终端来通知程序员

守护进程使用syslog服务,将程序中的出错信息输入到“/var/log/messages"系统日志文件中。

syslog是Linux中的系统日志管理服务,通过守护进程syslogd来维护。该守护进程在启动时会读一个配置文件"/etc/syslog.conf"。该文件决定了不同种类的消息会发送向何处。该机制提供了3个syslog函数,分别为openlog、syslog和closelog。

void openlog(char *ident, int option, int facility)

void syslog(int priority, char *format, ...)

void closelog(void)

(3)使用实例

 

7.4实验内容

 

【linux】第三天:进程管理:进程控制块、进程号、fork创建进程、特殊进程及exec函数族解析 可执行程序运行起来后(没有结束之前),它就成为了一个进程。程序是存放在存储介质上的一个可执行文件,而进程是程序执行的过程。进程的状态是变化的,其包括进程的创建、调度和消亡。程序是静态的,进程是动态的。 阅读详情

相关推荐

FreeRTOS CLI实战:5分钟搞定GD32串口终端移植(附LED控制源码)

本文详细介绍了如何在GD32芯片上快速移植FreeRTOS CLI(Command Line Interface)终端,实现串口交互式调试。通过DMA+空闲中断配置和LED控制命令实战,开发者可在5分钟内构建高效嵌入式调试工具,显著提升现场维护效率。

weixin_28707365的博客 450

进程控制之 fork、wait、exec族函数 及进程资源控制

一,fork //头文件 #include //函数定义 pid_t fork( void ); 返回值:子进程中返回0,父进程中返回子进程ID,出错返回-1函数说明:一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。子

Daniel 的技术笔记 不积跬步无以至千里,不积小流无以成江海。 9211

OpenCV图像去畸变实战指南:从原理到参数调优(附完整代码与效果对比)

本文详细解析了OpenCV图像去畸变的原理与实战方法,对比了三种核心函数(标准、鱼眼、全景模型)的适用场景与效果。重点提供了完整的代码示例,并深入探讨了alpha、焦距、中心点等关键参数的调优技巧,以帮助开发者有效矫正镜头畸变,提升计算机视觉任务精度。

life6的博客 553

第七章 进程控制开发[fork() exec exit _exit wait waitpid 守护进程]

前言: 1、fork 创建一个子进程,有两个返回值。返回0为子进程,返回大于0为父进程。 2、exec 运行新的可执行文件,取代原调用进程的数据段、代码段和堆栈段。一般是运行fork后,在子进程中执行exec。 3、exit(0)和_exit(0):exit(0)会先清理I/O缓冲后再调用系统exit,而_exit(0)是直接调用系统exit 4、wait函数是用于使父进程(也就是调用wa...

weixin_30642029的博客 559

ESP32 TWAI CAN库实战:从零构建CyberGear微电机控制框架

本文详细介绍了如何利用ESP32的TWAI控制器和Arduino环境,从零构建一个面向对象的CyberGear微电机控制框架。该框架将复杂的CAN通信协议封装为简洁的API,开发者无需深究底层细节,即可轻松实现电机的速度、位置和扭矩控制,大幅简化机器人关节、云台等项目的开发流程。

oil88的博客 499

IEEE Access 上岸指南,附含泪整理的 cover letter 、沟通邮件、终版文档等资料包

终于上岸了! 我是一个小硕,本科期间发表过两篇水文,奈何学校有更高的毕业要求,只能硬着头皮尝试一下 SCI。 想投 IEEE Access 的朋友都应该知道 小木虫论坛 对这个期刊的讨论,褒贬不一,有的人说是大水刊,有的人说有难度。 比如: @wow_: 不可否认,灌水期刊。只要之前中过一篇,再投基本没有不录用的!我们实验室其他老师说过一区除外的收费期刊都应该禁止灌水。 @pssp: 审稿人还...

kurryluo的博客 1万+

进程的学习

程序与进程 程序是个静态的概念,进程是个动态的概念。只有程序运行的时候,则说明系统多了一个进程 进程标志符:每个进程都有一个非负整数,用来表示唯一的ID,叫做pid。 父进程与子进程 如果A进程创建了B进程,那么A为父进程,B为子进程,父子进程是相对的概念。 C程序的存储空间分配 正文段:代码段, 初始化的变量:数据段, 未初始的变量:bss段 堆:malloc函数相关申请空间的函数返回值存放的地址 栈:函数调用后返回的地址 ...

small__fat的博客 380

IntelliJ IDEA 2025.1 + Gradle 镜像配置避坑指南:解决依赖下载慢的终极方案

本文针对IntelliJ IDEA 2025.1开发环境中Gradle依赖下载缓慢的问题,提供了详细的镜像配置避坑指南。通过解析Gradle依赖解析机制,重点指导如何正确配置阿里云等国内镜像仓库,并分享验证配置生效、排查常见错误及高级优化技巧,旨在彻底解决依赖下载难题,提升开发效率。

weixin_28835551的博客 532

Linux学习之进程fork()、exec、exit()/_exit()、wait()/waitpid

fork()函数 进程是一个程序的一次执行的过程。它和程序是有本质区别的,程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和消亡的整个过程。它是程序执行和资源管理的最小单位。 在Linux中从已存在的进程中创建一个新的进程唯一方法是使用fork()(或vfork(),下一篇笔记将介绍它们的区别),原来存在的

wuqishuang的专栏 8562

Cortex-M内核DWT周期计数器:从原理到STM32实战时间测量与性能分析

在嵌入式开发中,代码执行耗时测量是性能优化的基础。除了依赖外设定时器或SysTick,ARM Cortex-M3/M4/M7内核自带的DWT(Data Watchpoint and Tracker)调试组件提供了一种极低侵入性的硬件计时方案。其内部的32位周期计数器CYCCNT跟随内核时钟递增,无需占用额外引脚或定时器资源,即可实现纳秒级分辨率的函数耗时测量、中断响应分析及延时实现。从DWT寄存器配置、周期差值计算到基于SystemCoreClock的微秒换算,开发者可以快速搭建一套轻量级性能分析工具。本文

weixin_34216614的博客 190

Qt 国产嵌入式操作系统实现文字转语音功能(ekho库)

Qt 国产嵌入式操作系统实现文字转语音功能(TTS)_tts驱动 转文字-优快云博客在继上篇文章之后,甲方粑粑不满意使用eSpeak发出的声音太难听了,这就不得不找个替代品,声音稍微好听了一些。使用ekho开源库。Ekho(余音)是一个免费、开源的中文语音合成软件。它目前支持粤语、普通话(国语)、诏安客语、藏语、雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现。Ekho支持Linux、Windows和Android平台。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 2755

【Linux】进程控制:从fork到exec

详细讲解了linux中进程管理和控制的方法,从fork,wait到exec

You build it, you run it 1813

实操微信支付,适合第一次接通微信支付的同学

我的实际操作命令如下:就会生成图3中多出来的file文件夹,/Users/camel/cert/xxxxxx_cert/file/wechatpay_5A4xxxxxxxxxx9.pem,wechatpay_xxxxx5A4849E9.pem就是微信支付平台证书,也是程序真正需要的。•注意:我的操作说明,我是把下载好的 CertificateDownloader.jar 文件,放在了解压证书的目录里(图3)。//下面的静态参数要仔细看下面的解释,否则只会调用别人写好的方法,压根学不会0-1接入微信支付。

wjianwei666的专栏 525

从零开始学Linux进程控制:fork、wait、exec 详解

return、exit、_exit之间的联系。

ABWSO的博客 1236

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Linux系统篇(十六)——进程(五):Linux 进程控制全解:fork、exec、wait 核心原理与实战

进程是 Linux 操作系统调度资源的基本单位,而进程控制则是 Linux 编程中最核心的知识点之一。无论是日常开发、底层学习还是面试考察,forkexec,都是绕不开的重点。本文将从原理入手,结合代码案例,完整梳理进程从创建、运行、替换到退出、回收的全流程,带你彻底掌握 Linux 进程控制的核心逻辑。

2502_94387000的博客 1108

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

07.【Linux系统编程】进程控制(进程创建fork、进程终止exit等、进程等待wait&waitpid、进程替换execl等)

本文主要介绍了Linux进程控制的:进程创建、进程终止、进程等待和进程替换。在进程创建部分,详细讲解了fork函数的工作原理、写时拷贝技术以及fork的常见用法和失败原因。进程终止部分阐述了进程退出的三种场景,比较了return、exit和_exit三种退出方式的区别,并解释了退出码与错误码的区别。进程等待部分,强调了父进程回收子进程的必要性,以避免僵尸进程导致的内存泄漏问题。进程替换使用exec的几个函数实现,重点只替换代码和数据,PCB不变。清晰地展示了Linux进程管理的关键技术原理。

恢弘志士之气,不宜妄自菲薄 1295

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Linux】进程控制

进程控制是操作系统中管理和调度进程的关键功能,涉及到进程的创建、终止、等待、程序替换以及进程间通信等多个方面,简而言之,进程控制确保操作系统能够有效地管理并协调不同程序的执行。对于我们而言,要对进程进行相关操作,就要深入理解操作系统对进程的控制机制,并熟悉Linux下进程控制的相关接口。本篇文章,我们学习了进程控制的概念及进程创建、进程终止、进程等待和进程程序替换的相关Linux常用接口,学习了这些接口,想必大家能够更好地理解和掌握Linux系统中的进程控制技术。

2301_80955819的博客 4810

Linux进程控制——进程创建(fork)、进程终止(exit\_exit)、进程等待(wait\waitpid)和进程替换(exec函数)

一、进程创建 1.1 fork函数初识 对于fork函数的参数和返回值可以阅读本篇博客 Linux进程编程实践1——进程的基本概念、fork创建进程 这里直接上图了解fork的头文件和参数 Q1:为什么父进程返回子进程id,而子进程返回0? 现实生活中,任何孩子都知道自己的父亲(排除特殊情况),而父亲却可能有多个孩子,因此就需要一个代号来标识每一个孩子,简单来说就是父亲:孩子=1:n 因此,对于操作系统来说,父进程有多个子进程,需要返回子进程的pid来调度每个子进程,而任何子进程都知道自己的父进程,因此返

1604

Linux进程控制——进程创建(fork函数)、进程终止(exit和_exit函数)和进程等待(wait和waitpid方法)

一、进程创建 1.1 fork函数初识 对于fork函数的参数和返回值可以阅读本篇博客 Linux进程编程实践1——进程的基本概念、fork创建进程 这里直接上图了解fork的头文件和参数 Q1:为什么父进程返回子进程id,而子进程返回0? 现实生活中,任何孩子都知道自己的父亲(排除特殊情况),而父亲却可能有多个孩子,因此就需要一个代号来标识每一个孩子,简单来说就是父亲:孩子=1:n 因此,对于操作系统来说,父进程有多个子进程,需要返回子进程的pid来调度每个子进程,而任何子进程都知道自己的父进程,因此.

2686

Linux进程控制:fork、exit与wait详解

进程是操作系统资源分配的基本单位,Linux通过进程控制实现多任务管理。核心机制包括fork()创建新进程、exit()终止进程以及wait()回收子进程资源,这些系统调用构成了进程生命周期管理的基础。理解写时复制(COW)等优化技术对性能提升至关重要,而正确处理僵尸进程和文件描述符继承等问题则是工程实践中的关键挑战。在服务器开发、并行计算等场景中,合理的进程控制策略能显著提升系统稳定性和资源利用率。本文以Linux系统编程为背景,深入解析进程控制的实现原理与最佳实践。

weixin_30851867的博客 394

Linux《进程控制》

1.进程创建在之前的Linux《进程概念》当中我们已经了解了进程基本的概念,那么接下来在本篇当中我们将开始进程控制的学习;在本篇当中我们先会对之前的学习的创建子进程的系统调用fork再进行补充了解,并且再之后会重点的学习进程的终止、进程等待以及进程的替换。学习完这些知识之后再下一篇章当中就可以试着自己实现Shell,通过本篇的学习将会让你对进程有更深的理解,一起加油吧!!!1.进程创建。

mljy.博客 2719

进程控制 -- 进程创建(fork),进程终止(exit, _exit),进程等待(wait, waitpid),进程程序替换(exec*系列函数)

execl函数,需要传递程序的路径,并且使用列表形式传递命令行参数。int main()printf("我的程序要运行了!\n");sleep(1);exit(1);printf("我的程序运行完毕!\n");return 0;

CSQCSQCC的博客 724

【Linux系统篇】从 fork 到 WNOHANG:进程创建与等待机制详解

本文深入拆解 Linux 进程控制的核心机制,围绕进程“创建、退出、回收”三大生命周期展开。文章首先解析了 fork 背后写时拷贝(COW)的延迟复制艺术与分流用途;随后对比了 return、exit 与 _exit 在刷新 C 库缓冲区上的底层差异;并重点剖析了父进程如何通过 wait / waitpid 攻克僵尸进程。通过对原始 status 源码级位布局的分析,强调了使用 WIFEXITED 等系统宏的规范姿势,最后给出了基于 WNOHANG 的非阻塞轮询实战设计。

2402_87731470的博客 1121

Linux进程控制:fork、exec与wait机制详解

进程控制是操作系统核心功能,涉及进程创建、执行与回收的全生命周期管理。通过fork()系统调用创建子进程时,会复制父进程的地址空间形成独立执行单元,而exec()系列函数则实现进程映像的完全替换,这是Shell命令执行的基础原理。wait()机制通过监控子进程状态,既能获取程序执行结果,又能避免僵尸进程导致的资源泄漏。在Linux系统编程实践中,经典的fork-exec-wait组合模式广泛应用于Shell实现、服务端进程管理等场景,理解父子进程间的资源继承关系与同步机制,对开发高可靠性的多进程应用至关重要

weixin_30896825的博客 316

网络编程:fork、vfork、exec、wait等函数

网络编程函数1.fork()函数与vfork()函数1.1 fork()函数1.2 vfork()函数2.exec函数族3.exit()函数与_exit()函数4.wait()函数与waitpid()函数5.父子进程和fork的理解 1.fork()函数与vfork()函数 1.1 fork()函数 使用fork()函数得到的子进程是父进程的复制品,子进程完全复制了父进程的资源,包括进程上下文、代码区、数据区、堆区、栈区、内存信息、打开文件的文件描述符、信号处理函数、进程优先级、进程组号、当前工作目录、根目

107 1万+
上一篇: Android开发工具的下载
下一篇: linux监控程序-程序自动重启方法
lcathm
博客等级 码龄18年 37粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值