文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-10-03 12:32

关注

任务描述

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

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

相关知识

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

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

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

获取进程自身pid

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

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

  1. #include
  2. #include
  3. #include
  4. int main()
  5. {
    1. pid_t pid = getpid();
    2. printf("当前进程的ID为:%d\n", pid);
    3. return 0;
  6. }

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

获取父进程pid

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

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

  1. #include
  2. #include
  3. #include
  4. int main()
  5. {
  6. pid_t pid = getpid();
  7. printf("当前进程的ID为:%d\n", pid);
  8. pid_t ppid = getppid();
  9. printf("当前进程的父进程ID为:%d\n", ppid);
  10. return 0;
  11. }

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

编程要求

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

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

 第二关链接:https://blog.csdn.net/Zjyzzy123456789/article/details/130045820?spm=1001.2014.3001.5501

来源地址:https://blog.csdn.net/Zjyzzy123456789/article/details/130045763

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯