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

查找通过setsid创建的进程组id

通过setsid创建的进程组ID是指在Linux系统中,setsid函数可以创建一个新的会话,并将调用进程设置为该会话的领导者。会话是一个或多个进程组的集合,而进程组是一个或多个进程的集合。

setsid函数的作用是将调用进程从当前会话中分离出来,创建一个新的会话,并成为该会话的领导者。新会话中只包含一个进程组,该进程组中只有一个进程,即调用setsid的进程。新会话的会话ID(SID)和进程组ID(PGID)都被设置为调用进程的进程ID(PID)。

通过setsid创建的进程组ID具有以下特点:

  • 进程组ID是一个正整数,用于唯一标识一个进程组。
  • 进程组ID可以用来向进程组发送信号,以实现进程间的通信和协作。
  • 进程组ID可以用来管理进程的资源,如限制进程组的资源使用量。
  • 进程组ID可以用来控制进程的权限,如设置进程组的访问权限。

setsid创建的进程组ID在以下场景中常被使用:

  • 守护进程:setsid通常用于创建守护进程,即在后台运行的长期运行的进程。通过创建新的会话和进程组,守护进程可以与终端分离,独立于用户会话运行。
  • 进程管理:setsid可以用于管理一组相关的进程。通过将一组进程放入同一个进程组,可以方便地对这些进程进行控制和管理。
  • 作业控制:setsid可以用于创建一个新的作业,将一组相关的进程放入同一个进程组,并通过控制进程组来管理作业的运行状态。

腾讯云提供了一系列与进程管理和云计算相关的产品,如云服务器、容器服务、批量计算等。这些产品可以帮助用户轻松管理和部署进程,并提供高可用性、弹性扩展和安全性等特性。

以下是腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):提供可扩展的虚拟服务器,支持自定义配置和管理,适用于各种应用场景。详情请参考:云服务器产品介绍
  • 容器服务(TKE):基于Kubernetes的容器管理服务,提供高可用、弹性伸缩和自动化运维等功能,适用于容器化应用的部署和管理。详情请参考:容器服务产品介绍
  • 批量计算(BatchCompute):提供高性能的批量计算服务,支持大规模计算任务的并行执行和资源调度,适用于科学计算、数据分析等场景。详情请参考:批量计算产品介绍

请注意,以上产品仅为示例,实际选择产品时应根据具体需求进行评估和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • VC下通过进程ID获取进程镜像文件路径方法及其存在缺陷

    工作中经常会遇到通过进程ID获取进程镜像文件或者其他模块路径需求。...网上有人提出过这样问题,但是只是说VC提示“类型不一致”,于是就有人说要强制转换。当然强制转换可以解决VC编译通过问题,但是这样做不会有任何效果。...第二个方案与第一个方案不同之处在于,通过EnumProcessModules获取进程镜像文件模块HMOUDLE,然后将这个HMOUDLE传给GetMoudleFileNameEx就可以获得该镜像文件路径...,有些进程是无法被OpenProcess,如果将调用进程权限 // 提到“调试”权限,则可能可以打开更多进程 hProcess = OpenProcess(...break; } // 保存文件路径 cstrPath = szPath; // 查找成功了

    1.6K20

    PHP中会话

    ,默认系统会把当前进程设置为会话首进程(使用strace查看),所以当前会话首进程不能使用posix_setsid 创建为会话首进程,只能使用子进程调用此函数 3、当调用此函数后,这个进程会变成组长进程...(); //pid当前进程id ppid 父进程id pgid 会话id sid 进程会话id fprintf(STDOUT,"pid=%d,ppid=%d,pgid=%d,sid...show(); while (1){ ; } PHP Copy 我们通过截图可以看到,18880是18879进程,18880和18879ID和会话ID是一样,因为父进程是当前bash...进程进程,所以继承了父进程会话ID,而利用pcntl_fork 创建进程则又继承了父进程信息,所以看到则是一样 ---- 设置setsid程序 function show() {...,子进程19578 pgid和sid 都是19578,也就满足上面提到技术点第三点,将自己设置为组长进程和会话首进程 通过命令ps -exj 可以看到,设置setsid这个进程是没有 pts 控制终端

    1.2K30

    什么是会话

    ,默认系统会把当前进程设置为会话首进程(使用strace查看),所以当前会话首进程不能使用posix_setsid 创建为会话首进程,只能使用子进程调用此函数 3、当调用此函数后,这个进程会变成组长进程...我们通过截图可以看到,18880是18879进程,18880和18879ID和会话ID是一样,因为父进程是当前bash进程进程,所以继承了父进程会话ID,而利用pcntl_fork 创建进程则又继承了父进程信息...,所以看到则是一样 ---- 设置setsid程序 function show() { $pid = posix_getpid(); //pid当前进程id ppid 父进程id...200); } //创建成功返回会话id,否则返回 -1 $num = posix_setsid(); if($num == -1){ var_dump('创建会话失败'); }else{...通过命令ps -exj 可以看到,设置setsid这个进程是没有 pts 控制终端,满足技术点第四点 注意 19578这个进程id是1号进程,但并不意味着,这个进程是孤儿进程,而是由一号进程接管会话首进程

    1.2K20

    【linux命令讲解大全】076.pgrep命令:查找和列出符合条件进程ID

    pgrep 根据用户给出信息在当前运行进程查找并列出符合条件进程ID(PID) 补充说明 pgrep 命令以名称为依据从运行进程队列中查找进程,并显示查找进程ID。...每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割可能值集合。...语法 pgrep [options] 选项 -o:仅显示找到最小(起始)进程号; -n:仅显示找到最大(结束)进程号; -l:显示进程名称; -P:指定父进程号; -g:指定进程...; -t:指定开启进程终端; -u:指定进程有效用户ID。...参数 :指定要查找进程名称,同时也支持类似grep指令中匹配模式。

    29310

    Linux守护进程

    操作系统设计进程概念主要就是为了简化对多个进程管理。 当父进程创建进程时候,默认父进程和子进程同属于同一个进程进程ID等于第一个进程ID,也就是组长进程ID。...我们在使用kill杀死进程时候,可以通过 kill -SIGKILL -进程ID 来杀死整个进程全部进程。...组长进程可以创建一个进程,只要进程中有一个进程存在,那么这个进程就存在,并且即使组长进程终止也不会影响进程进程生命周期时从进程创建进程最后一个进程终止或转移到另一个进程。...总结 进程:多个进程在同一个,第一个进程默认是进程组组长。 会话:进程上一级,多个进程对应一个会话。 创建会话时候,不能使用进程组组长创建,必须使用组员创建。...创建一个守护进程最关键一步是调用setsid函数创建一个新session,并成为session leader。 通过 ps aux 可以查看进程是否有依靠终端,?

    10910

    守护进程「建议收藏」

    操作系统设计进程概念, 是为了简化对多个进程管理 当父进程, 创建进程时候, 默认子进程与父进程属于同一进程. 进程ID第一个进程ID(组长进程)....所以, 组长进程标识: 其进程ID进程ID 可以使用kill -SIGKILL -进程ID(负)来将整个进程进程全部杀死 组长进程可以创建一个进程, 创建进程进程, 然后终止....只要进程中有一个进程存在, 进程就存在, 与组长进程是否终止无关 进程生存期: 进程创建到最后一个进程离开(终止或转移到另一个进程) 一个进程可以为自己或子进程设置进程ID 总结 进程   ...进程组长     组里边第一进程     进程ID–> 进程组长ID   进程组组长选择     进程第一个进程   进程ID设定     进程id就是组长进程...组长进程不能成为新会话首进程,新会话首进程必定会成为组长进程setsid pid_t setsid(void); 创建一个会话,并以自己ID设置进程ID,同时也是新会话ID

    58040

    详解Linux中守护进程

    二、守护进程调用 创建守护进程最关键⼀步是调⽤setsid函数创建⼀个新会话,并成为会话leader。...该函数调用成功时返回新创建Sessionid(其实也就是当前进程id),出错返回-1。注意,调用这个函数之前,当前进程不允许是进程Leader,否则该函数返回-1。...fork创建进程和⽗进程在同⼀个进程中,进程Leader必然是该第⼀个进程,所以子进程不可能是该第⼀进程,在子进程中调用setsid就不会有问题了。...成功创建并调用一个守护进程标志是: 1、成功新建一个会话,当前进程成为该会话leader,该会话ID为当前进程ID; 2、成功新建一个新进程,并且成为该组长,该进程id即为当前进程...(如果该守护进程作为一条简单shell命令启动,那么父进程终止使得shell认为该命令已经执行完毕。同时保证该进程不是一个进程组长进程) 3、调用setsid创建一个新会话。

    3.8K43

    linux系统编程之进程(五):终端、作业控制与守护进程

    需要注意是,使用 nohup 时进程id 为终端进程id,使用 setsid进程id 为 1(即 init 进程 id)。...四、创建守护进程步骤 调用fork(),创建进程,它会是将来守护进程 在父进程中调用exit,保证子进程不是进程组组长 调用setsid创建会话期 将当前目录改为根目录 将标准输入、标准输出...、标准错误重定向到/dev/null 成功调用setsid函数结果是: 创建一个新Session,当前进程成为Session Leader,当前进程id就是Sessionid。...创建一个新进程,当前进程成为进程Leader,当前进程id就是进程id。 如果当前进程原本有一个控制终端,则它失去这个控制终端,成为一个没有控制终端进程。.../daemon 可以看出守护进程ID也是进程ID,也是会话期ID,此外这个会话期没有前台进程

    2.6K90

    【linux命令讲解大全】189.常用Linux命令详解

    setsid 在新会话中运行程序 补充说明 setsid 命令子进程从父进程继承了:SessionID、进程ID和打开终端。子进程如果要脱离这些,代码中可通过调用 setsid 来实现。...而命令行或脚本中可以通过使用命令 setsid 来运行程序实现。setsid 帮助一个进程脱离从父进程继承而来已打开终端、隶属进程和隶属会话。...而不使用默认配置文件 -k:向 squid 服务器发送指令 -s:启用 syslog 日志 -z:创建缓存目录 -C:不捕获致命信号 -D:不进行 DNS 参数测试 -N:以非守护进程模式运行 -X:强制进入完全调试模式...-u:代理认证用户名 参数 URL:指定操作缓存中 URL ssh-copy-id 把本地 ssh 公钥文件安装到远程主机对应账户下 补充说明 ssh-copy-id 命令可以把本地主机公钥复制到远程主机...语法 ssh-copy-id [-i [identity_file]] [user@]machine 选项 -i:指定公钥文件 实例 1、把本地 ssh 公钥文件安装到远程主机对应账户下: ssh-copy-id

    9610

    Linux - 请允许我静静地后台运行

    进程 进程是一个或多个进程集合,进程组方便了对多个进程控制,在进程数较多情况下,向进程发送信号就行了。 它 ID 由它组长进程进程 ID 决定。...组长进程创建进程,但它并不能决定进程存活时间,只要进程内还有一个进程存在,进程就存在,与组长进程是否已终止无关。...我们要实现后台执行目的,实际上是要完成如下两个目标: 使进程让出前台终端,让我们可以继续通过终端与系统进行交互。...创建过程 要创建一个守护进程,步骤为: 必选项 fork 子进程,退出父进程,子进程作为孤儿进程被 init 进程收养; 使用 setsid, 打开新会话,进程成为会话组长,正式脱离终端控制; 设置信号处理...; // 父进程直接退出 } elseif ($pid < 0) { throw_error(); // 进程创建失败 } posix_setsid(); // setsid成为会话领导进程

    1.7K50

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

    会话和进程 进程进程是多个进程集合, 接收同一个终端各类信号信息。进程调用setpgid(pid, pgid)可以加入一个现有的进程或者创建一个新进程。...进程组长(头部进程):每个进程都有一个进程ID, 每个进程都有一个组长(头部进程), 在大部分系统中, 进程ID一般就是头部进程ID。获得一个进程所在进程ID用getpgid(pid)。...会话创建进程调用setsid函数创建一个新Session,并成为Session Leader a.调用这个函数之前,当前进程不允许是进程Leader,否则该函数返回-1。...fork创建进程和父进程在同一个进程中,进程Leader必然是该第一个进程,所以子进程不可能是该第一个进程,在子进程中调用setsid就不会有问题了。...子进程继承了父进程进程ID,不过它有自己进程ID,这就保证了子进程不是一个进程头部进程 Step.3 调用setsid( ),给守护进程创建一个新进程和会话,使当前进程成为新进程头部进程

    3K20

    PHP 编写守护进程

    在子进程创建新会话 这个步骤是创建守护进程中最重要一步,在这里使用是系统函数 setsidsetsid 函数用于创建一个新会话,并担任该会话组长。...调用 setsid 三个作用:让进程摆脱原会话控制、让进程摆脱原进程控制和让进程摆脱原控制终端控制。...在调用 fork 函数时,子进程全盘拷贝父进程会话期 (session,是一个或多个进程集合)、进程、控制终端等,虽然父进程退出了,但原先会话期、进程、控制终端等并没有改变,因此,那还不是真正意义上使两者独立开来...setsid 函数能够使进程完全独立出来,从而脱离所有其他进程控制。 改变工作目录 使用 fork 创建进程也继承了父进程的当前工作目录。...exit('parent process'); } //在子进程创建会话 if (posix_setsid() === -

    1.7K20

    教你写一个守护进程

    通过命令"ps -ajx"查看系统所有的进程,如下所示: TTY 一栏是问号?...第二,虽然子进程继承了父进程进程ID,但它有自己独立进程ID,这保证了子进程不是一个进程组长进程,这是下面将要调用 setsid 函数先决条件! 子进程调用 setsid 创建会话。...setsid()函数创建会话,由于之前子进程并不是进程组长进程,所以调用 setsid()会使得子进程创建一个新会话,子进程成为新会话首领进程,同样也创建了新进程、子进程成为组长进程,此时创建会话将没有控制终端...所以这里调用 setsid 有三个作用:让子进程摆脱原会话控制、让子进程摆脱原进程控制和让子进程摆脱原控制终端控制。...exit(0); //直接退出 /* *子进程 */ /* 1.创建会话、脱离控制终端 */ if (0 > setsid()) { perror("

    1.5K30

    进程、会话、控制终端概念,如何创建守护进程

    • PGID进程ID 进程所有进程都有相同PGID,等于该组组长PID。(进程组组长:进程中有一个进程担当组长。进程ID(PGID)等于进程组组长进程ID。...已知一个进程,要得到该进程所属进程ID可以调用getpgrp。一个进程可以通过另一个系统调用setpgrp来加入一个已经存在进程或者创建一个新进程。...如果内核支持_POSIX_JOB_CONTROL(该宏被定义)则内核会为Shell 上每一条命令行(可能由多个命令通过管道等连接)创建一个进程。...一个进程调用setsid()函数后,会发生如下事件: • 首先内核会创建一个新会话,并让该进程成为该会话leader进程, • 同时伴随该session建立,一个新进程也会被创建,同时该进程成为该进程组长...• 让进程摆脱原进程控制。 • 让进程摆脱原控制终端控制。 复制代码 那么,在创建守护进程时为什么要调用setsid()函数呢?

    1.4K20

    AirPlay Deamon学习(Linux Daemon)

    一个进程只能为它自己或子进程设置进程ID号 会话期: 会话期(session)是一个或多个进程集合。...setsid()函数可以建立一个对话期: 如果,调用setsid进程不是一个进程组长,此函数创建一个新会话期。...(4)为了保证这一点,我们先调用fork()然后exit(),此时只有子进程在运行 (创建)编写守护进程步骤: (1)在父进程中执行fork并exit推出; (2)在子进程中调用setsid函数创建会话...登录会话可以包含多个进程。这些进程共享一个控制终端。这个控制终端通常是创建进程登录终端。 控制终端,登录会话和进程通常是从父进程继承下来。我们目的就是要摆脱它们,使之不受它们影响。...可以通过使进程不再成为会话组长来禁止进程重新打开控制终端: if(pid=fork()) exit(0);//结束第一子进程,第二子进程继续(第二子进程不再是会话组长) 关闭打开文件描述符 进程创建进程那里继承了打开文件描述符

    1.2K30

    进程、会话、终端概念深入理解守护进程

    进程中有一个进程组长,组长进程 ID进程 ID(PGID) $ ps -o pid,pgid,ppid,comm | cat PID PGID PPID COMMAND 10179...10179 10177 bash 10263 10263 10179 ps 10264 10263 10179 cat 下边通过简单示例来理解进程 bash:进程进程ID都是 10179,父进程其实是...sshd(10177) ps:进程进程ID都是 10263,父进程是 bash(10179),因为是在 Shell 上执行命令 cat:进程 ID 与 ps 进程 ID 相同,父进程同样是...这么做原因有 2 点: 如果守护进程通过 Shell 启动,父进程退出,Shell 就会认为任务执行完毕,这时子进程由 init 收养 子进程继承父进程进程 ID,保证了子进程不是进程组组长,因为后边调用...setsid()要求必须不是进程组长 2、子进程创建新会话 调用setsid()创建一个新会话,并成为新会话组长。

    1K20

    带着老李折腾山寨Workerman(四)

    这里我们要引入进程、会话概念了: 进程:一坨相关进程会抱团组成一个进程,每个进程有一个组长,进程ID等于组长进程PID;只有当进程组里没有一个活着进程了,这个进程就算彻底完犊子了...关于会话重点难点,在这里,下面这些用红线圈住,考试要考: 一、使用setsid()函数可以创建一个新会话 二、组长进程(此处你可以暂时认为是父进程)无法调用setsid,会报错 三、非组长进程...(此处你可以粗暴认为是子进程)可调用setsid创建出一个新会话,这个行为会导致[ 该进程创建一个新进程且自身为该进程组组长,该进程创建出一个新会话且自身为该会话组组长,该进程会脱离当前命令行控制终端...php $i_pid = pcntl_fork(); // 在子进程中... if ( 0 == $i_pid ) { // setsid创建新会话 if ( posix_setsid()...if ( 0 == $i_pid ) { // setsid创建新会话 if ( posix_setsid() < 0 ) { exit(); } //

    80831
    领券