setpgid()

#include<unistd.h>

int setpgid(pid_t pid,pid_t pgid);

函数作用:将pid进程的进程组ID设置成pgid,创建一个新进程组或加入一个已存在的进程组

函数性质:

性质1:一个进程只能为自己或子进程设置进程组ID,不能设置其父进程的进程组ID。

性质2:if(pid == pgid), 由pid指定的进程变成进程组长;即进程pid的进程组ID pgid=pid.

性质3:if(pid==0),将当前进程的pid作为进程组ID.

性质4:if(pgid==0),将pid作为进程组ID.

函数使用说明:一般自己调用该函数时,最好是明确指定pid和pgid,方便阅读代码流程;若想特意为之,就要会用性质。

测试代码:

测试结果:

时间: 2024-10-25 02:57:32

setpgid()的相关文章

守护进程(setsid、getpgrp、setpgid、getpgid)以及系统日志(openlog、syslog、closelog)

守护进程:精灵进程 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件. 特点: 1.脱离控制终端 2.会话的leader 3.进程组的leader ============================= 系统日志: [root]# cd /var/log/    系统日志 主日志文件:messages syslogd服务----权限分离:每个用户将要提交的日志提交给syslogd服务,syslogd将日志写入系统日志 #in

20145207《信息安全系统设计基础》第十一周学习总结

今天终于算是基本上把代码查了,开心.感谢这些天帮我弄机器的老师同学,加油干喽. 异常控制流 一.知识点梳理 (一)异常控制流概述 1.控制转移:从一条指令到下一条指令的过渡. 2.控制流:控制转移序列. - 最简单的控制流:平滑的序列,每条指令在存储器中都是相邻的. - 平滑流的突变:由于跳转.调用和返回等指令造成两条指令不相邻. 3.异常控制流(Exceptional Control Flow, ECF):现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流. 4.异常

可重入和不可重入

重入一般可以理解为一个函数在同时多次调用,例如操作系统在进程调度过程中,或者单片机.处理器等的中断的时候会发生重入的现象. 一般浮点运算都是由专门的硬件来完成,举个例子假设有个硬件寄存器名字叫做FLOAT,用来计算和存放浮点数的中间运算结果 假设有这么个函数 void fun() { //...这个函数对FLOAT寄存器进行操作 } 假如第一次执行,有个对浮点数操作运算的结果临时存在FLOAT寄存器中,而就在这时被中断了,而中断函数或者另一个进程也调用fun函数,这时第二次调用的fun函数在执行

一、进程与信号之进程组

进程组相关函数 #include <unistd.h> getpgid(int pid); //获取进程组id setpgid(int pid,int pgid); //创建进程组,添加进程到进程组 kill -9 -gpid 通过kill 进程组id 终结所有进程组的进程 ctrl + c 终结进程组id

理解Android虚拟机体系结构

1 什么是Dalvik虚拟机 Dalvik是Google公司自己设计用于Android平台的Java虚拟机,它是Android平台的重要组成部分,支持dex格式(Dalvik Executable)的Java应用程序的运行.dex格式是专门为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统.Google对其进行了特定的优化,使得Dalvik具有高效.简洁.节省资源的特点.从Android系统架构图知,Dalvik虚拟机运行在Android的运行时库层. 2 Dalvik虚拟机的功能

20135213——信息安全系统设计基础第十周学习总结

第八章异常控制流 一.学习目标 1. 了解异常及其种类2. 理解进程和并发的概念3. 掌握进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,4.  理解数组指针.指针数组.函数指针.指针函数的区别5. 理解信号机制:kill,alarm,signal,sigaction6. 掌握管道和I/O重定向:pipe, dup, dup2 二.学习资源 1. 教材:第八章<异常控

读书笔记-APUE第三版-(9)进程关系

登录过程 终端登录 init从/etc/ttys中读取终端信息,对每个允许登录的终端,都fork子进程,并执行getty.getty打开终端设备,执行login: execle("/bin/login,"login", "-p", username, (char *)0, envp) login进行用户名密码验证,同时还会进行切换到用户主目录/修改终端设备属主&读写权限/创建进程组/setuid等动作,然后运行login shell. execl(

系统时间错误导致make命令实际在循环执行configure命令

特征屏幕轮番出现checking的字符基本可以确定系统时间是有问题: checking for --enable-universalsdk... no  checking for --with-universal-archs... 32-bit  checking MACHDEP... linux2  checking EXTRAPLATDIR...   checking machine type as reported by uname -m... i686  checking for --w

为python添加tab自动补全功能

fedora ~ $ python Python 2.7.8 (default, Nov 10 2014, 08:19:18) [GCC 4.9.2 20141101 (Red Hat 4.9.2-1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys