在实际应用开发过程中,往往会碰到部分进程不能或者不要求独立启动,必须通过其他启动进程拉起,针对此种场景其实非常简单,只需要判断当前进程ID和当前进程所属的组识别码是否相等,如果相等说明进程为独立启动,程序直接退出,否则程序继续执行。
先简单介绍一下涉及的两个系统函数:
函数一: getpgrp
头文件:#include <unistd.h>
定义函数:pid_t getpgrp(void);
函数说明:getpgrp()用来取得目前进程所属的组识别码. 此函数相当于调用getpgid(0);
返回值:返回目前进程所属的组识别码.
范例
#include <unistd.h>
main()
{
printf("my gid =%d\n", getpgrp());
}
执行:
my gid =29546
函数二: getpgrp
头 文 件: #include <unistd.h>
定义函数: pid_t getpid(void);
函数说明: getpid ()用来取得目前进程的进程识别码。
返回值:目前进程的进程识别码
范例
#include <unistd.h>
main()
{
printf("pid=%d\n", getpid());
}
了解了以上两个函数之后,几句代码可控制程序独立启动,例如
void checkIndependent()
{
pid_t my_pid, my_gid;
my_pid = getpid();
my_gid = getpgrp();
if (my_pid == my_gid)
{
printf("Warning: Program is not allowed \n");
exit(1);
}
}