您的位置:首页 > 文旅 > 旅游 > 小米网页怎么制作_免费的招聘网站有哪些_seo标题优化步骤_最大免费发布平台

小米网页怎么制作_免费的招聘网站有哪些_seo标题优化步骤_最大免费发布平台

2025/2/26 14:29:56 来源:https://blog.csdn.net/m0_74620645/article/details/144652282  浏览:    关键词:小米网页怎么制作_免费的招聘网站有哪些_seo标题优化步骤_最大免费发布平台
小米网页怎么制作_免费的招聘网站有哪些_seo标题优化步骤_最大免费发布平台

第1关:获取进程常见属性

任务描述
在 Linux 环境下,进程是一个十分重要的概念。每个进程都由一个唯一的标识符来表示,即进程ID,通常称为pid。本关将介绍如何获取进程的pid。

本关任务:学会使用C语言在Linux系统中获取进程的pid以及父进程的pid。

相关知识
Linux系统中存在一个特殊的进程,即空闲进程(idle process),当没有其他进程在运行时,内核所运行的进程就是空闲进程,它的pid为0。在启动后,内核运行的第一个进程称为init进程,它的pid是1。通常,Linux系统中init进程就是我们在资源管理器中看到的名为init的程序。系统中其它的进程都是由init来创建出来的。

创建新进程的那个进程被称为父进程,而新创建的进程被称为子进程。每个进程都是由其他进程创建的(除了init进程),因此每个子进程都有一个父进程。

Linux系统提供了两个系统调用函数来获取一个进程的pid和其父进程的pid,分别是getpid和getppid函数。在Linux系统中可以使用man命令来查询这些函数的使用方法。具体的查询命令为:
man 2 函数名

获取进程自身pid
获取进程本身的进程ID的系统调用函数是getpid,具体的说明如下:

需要的头文件如下:

#include <sys/types.h>
#include <unistd.h>

函数格式如下:

pid_t getpid(void);

 

函数返回值说明:
返回当前进程的pid值。

案例演示1:
编写一个程序,打印自身的进程ID。详细代码如下所示:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{pid_t pid = getpid();printf("当前进程的ID为:%d\n", pid);return 0;
}

 

将以上代码保存为getpid.c文件,编译执行。可以看到每次运行都打印出不同的进程ID,这是因为Linux系统动态的给进程分配pid。

获取父进程pid
获取父进程的进程ID的系统调用函数是getppid,具体的说明如下:

需要的头文件如下:

#include <sys/types.h>
#include <unistd.h>

函数格式如下:

pid_t getppid(void);

函数返回值说明:
返回当前进程的父进程的pid值。

案例演示1:
编写一个程序,打印父进程ID和自身进程ID。详细代码如下所示:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{pid_t pid = getpid();printf("当前进程的ID为:%d\n", pid);pid_t ppid = getppid();printf("当前进程的父进程ID为:%d\n", ppid);return 0;
}

 

 

将以上代码保存为getppid.c文件,编译执行。可以看到每次运行都打印出相同的父进程ID,这是因为我们在同一个终端中运行3次程序,所以被运行的程序父进程为终端进程,因为父进程一直都一样。

编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

补全getProcInfo函数,用于获取当前进程ID和其父进程ID(提示:将结果存放在procIDInfo结构体中)。
测试说明
本关的测试需要用户在右侧代码页中补全代码,然后点击评测按钮,平台会自动验证用户是否按照要求去检测结果。

答案如下:

#include <unistd.h>#include <sys/types.h>#include <stdio.h>// int main()
// {
//     pid_t pid=getpid();
//     printf("当前进程的ID为:%d\n",pid);
//     pid_t ppid=getppid();
//     printf("当前进程的父进程ID为:%d\n",ppid);
//     return 0;
// }
/*********************** pid: 当前进程ID* ppid: 父进程ID***********************/
struct procIDInfo {pid_t pid;pid_t ppid;
};// /************************
//  * 返回值: 需要被打开的目录路径
// *************************/
struct procIDInfo getProcInfo() {struct procIDInfo ret; //存放进程ID信息,并返回/********** BEGIN **********/ret.pid = getpid();ret.ppid = getppid();/********** END **********/return ret;
}

 

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com