首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核编程--进程和守护进程

进程组长(头部进程):每个进程都有一个进程ID, 每个进程都有一个组长(头部进程), 在大部分系统中, 进程ID一般就是头部进程ID。获得一个进程所在的进程ID用getpgid(pid)。...b.进程调用完此函数,会成为新会话的会话首进程(session leader),该进程会成为一个新进程的头部进程,新进程ID就是这个进程ID。 c.该进程没有控制终端。...子进程继承了父进程进程ID,不过它有自己的进程ID,这就保证了子进程不是一个进程的头部进程 Step.3 调用setsid( ),给守护进程创建一个新的进程和会话,使当前进程成为新进程的头部进程...1); fprintf(fp, "%d", i); i++; } fclose(fp); return (0); } 运行结果: 常用的Linux...查询被进程ID对应的进程打开的文件:lsof -p 1000 查看进程内存情况:pmap PID 样例: 参考阅读: 《UNIX环境高级编程第3版》 《Linux C++ 通信架构实战》 《UNIX

3K20

Linux进程ID号--Linux进程的管理与调度(三)【转】

进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID的类型: 内核中进程ID的类型用pid_type来描述,它被定义在include/linux/pid.h中: enum...是 Linux 中在其命名空间中唯一标识进程而分配给它的一个号码,称做进程ID号,简称PID。...(轻量级进程)的ID标识 在一个进程中,如果以CLONE_THREAD标志来调用clone建立的进程就是该进程的一个线程(即轻量级进程Linux其实没有严格的进程概念),它们处于一个线程,该线程的所有线程的...进程ID叫做PGID,进程内的所有进程都有相同的PGID,等于该组组长的PID。 SID 几个进程可以合并成一个会话(使用setsid系统调用),可以用于终端程序设计。...带进程ID类型的task_struct设计 如果考虑进程之间有复杂的关系,如线程进程、会话,这些均有ID,分别为 TGID、PGID、SID,所以原来的 task_struct 中pid_link

5.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux进程调度-调度及带宽控制

    概述 调度(task_group)是使用Linux cgroup(control group)的cpu子系统来实现的,可以将进程进行分组,按来分配CPU资源等。...比如,看一个实际的例子: A和B两个用户使用同一台机器,A用户16个进程,B用户2个进程,如果按照进程的个数来分配CPU资源,显然A用户会占据大量的CPU时间,这对于B用户是不公平的。...调度就可以解决这个问题,分别将A、B用户进程划分成组,并将两的权重设置成占比50%即可。...CFS调度器管理的是sched_entity调度实体,task_struct(代表进程)和task_group(代表进程)中分别包含sched_entity,进而来参与调度; 关于调度的相关数据结构...sched_entity结构中存在parent指针,指向它的父结构,因此,系统的运行也能从下而上的进行遍历操作,通常使用函数walk_tg_tree_from进行遍历; 2.2 task_group权重 进程进程都有权重的概念

    1.9K30

    进程ID进程间的关系

    进程ID 进程相关的 ID 有多种,除了进程标识 PID 外,还包括:线程标识 TGID,进程标识 PGID,回话标识 SID。...TGID/PGID/SID 分别是相关线程组长/进程组长/回话 leader 进程的 PID。 下面分别介绍这几种ID。 PID 进程总是会被分配一个唯一标识它们的进程ID号,简称 PID。...由进程创建的所有线程都有相同的线程ID(TGID)。线程有自己的 PID,它的TGID 就是进程的主线程的 PID。如果进程没有使用线程,则其 PID 和 TGID 相同。...pids[] 的数组下标是枚举类型,在 include/linux/pid.h 中定义了 PID 的类型: enum pid_type { PIDTYPE_PID, PIDTYPE_TGID,...会话、进程关系 Linux 系统中可以有多个会话(session),每个会话可以包含多个进程,每个进程可以包含多个进程

    60423

    Linux系列(四):我经常用下列命令查看进程id

    序号 001 查看端口被哪个进程占用 1. lsof -i:端口号, 查看某一端口的占用情况 [root@localhost bin]# lsof -i:8080 COMMAND PID USER FD...PID:进程ID,一般杀掉进程时就是指定进程的PID USER:进程所有者 2. netstat -ntlp:查看当前所有tcp端口 结合grep可以进一步查看具体端口号的占用情况 netstatstat...ID为3511的Java进程占用 [root@ops01 ~]# netstat -tunlp|grep 3000 tcp6 0 0 :::3000...:::* LISTEN 13298/node /u01/WSS 上述结果表示3000端口被一个进程ID为13298的node程序占用 序号 002 根据程序名称查看进程...id 1. ps -ef|grep 进程名 ps -ef 是显示所有进程 UID:进程拥有者 PID:进程ID PPID:上级父程序的ID C: CPU 使用的资源百分比 STIME:系统启动时间

    2.3K10

    解决 Django 多进程下,logging 记录日志错乱问题

    两个异常如下: 日志写入错乱; 日志并没有按天分割,而且还会丢失。...在网上查找一些资料,发现了原因所在: Django logging 是基于 Python logging 模块实现的,logging 模块是线程安全的,但不能保证多进程安全。...再来看看多进程的情况: 生成 error.log 文件; 写入一天的日志; 零点时,1 号进程判断 error.log-2020-05-15 是否存在,如果存在则删除;如果不存在,将 error.log...; 2 号进程进行文件分割操作,由于 error.log-2020-05-15 已经存在,所以 2 号进程会将它删除,然后再重命名 error.log,这样就导致了日志丢失; 由于 2 号进程将 error.log...重命名为 error.log-2020-05-15,也会导致 1 号进程继续向 error.log-2020-05-15 写入,这样就造成了写入错乱

    1.9K10

    如何获得Docker容器进程ID?

    开始之前 在某些情况下,比如系统负载很高 docker stop 无法关闭某个容器(无响应),这时可以根据容器进程ID找到宿主机进程ID,然后强制kill掉这个容器,最好已经使用了数据卷保证数据持久化...获得容器进程ID docker inspect -f '{{ .State.Pid }}' web 9834 3....最后如有必要可以kill这个进程ID,这等于强制杀掉容器进程。 kill -9 9834 容器进程 内容摘自 > 一书。...容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID空间。...小结 最后来总结下文章中的知识点 Docker容器本质上是宿主机上的进程。 容器进程ID就是宿主机进程ID,因为它们是相同的。

    5.8K10

    Linux进程——Linux进程进程优先级

    如果对前面Linux进程不太熟悉可以先阅读: Linux进程 本篇主要内容: 僵尸进程和孤儿进程 Linux进程优先级 1. 僵尸进程 僵尸进程就是处于僵尸状态下的进程!...= fork(); 8 if(id < 0) return 1; 9 else if(id == 0) 10 { 11 // 子进程...= fork(); 8 if(id < 0) return 1; 9 else if(id == 0) 10 { 11 // 子进程 12...NI :NICE值,表示优先级的修改数据 NICE其取值范围是-20至19,一共40个级别 Linux进程的优先级数值范围:60~99 Linux中默认进程的优先级都是:80 Linux是支持动态优先级调整的...总结 本篇文章前部分紧贴上篇Linux进程,分析完了Linux下常见的进程状态,然后初步了解了Linux进程优先级,而进程优先级与前面内容相差较大,希望大家能够多花点时间理解!

    10010

    LinuxLinux进程控制>进程创建&&进程终止&&进程等待&&进程程序替换

    1.进程创建 1.1 fork函数 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。...新进程为子进程,而原进程为父进程 #include pid_t fork(void); 返回值:自进程中返回0,父进程返回子进程id,出错返回-1 进程调用fork,当控制转移到内核中的...); 返回值: 当正常返回的时候waitpid返回收集到的子进程进程ID; 如果设置了选项WNOHANG,而调用中waitpid发现没有已退出的子进程可收集,则返回0; 如果调用中出错,则返回-...Pid>0.等待其进程ID与pid相等的子进程。 status: WIFEXITED(status): 若为正常终止子进程返回的状态,则为真。...(查看进程的退出码) options: WNOHANG: 若pid指定的子进程没有结束,则waitpid()函数返回0,不予以等待。若正常结束,则返回该子进 程的ID

    15310
    领券