linux自制守护进程

C语言里,只能由父进程派生子进程 ,而不是由子进程的子进程派生

ps -ef

源头进程是init


c里面
创建一个与原进程完全相同的进程,原来的进程成为新进程的父进程


需要引入头文件
<unistd.h>
fork();


C语言里,只能由父进程派生子进程 ,而不是由子进程的子进程派生
代码如下 :
#include <stdio.h>
#include <unistd.h>
int main()
{


    int pid;
    int i;
for(i=0;i<4;i++)
{
  pid=fork();
  if(pid<=0) break;
}
printf("start\n");
sleep(20);
printf("end\n");


}


ps -ef | grep god_me
=====================================================
变成守护进程


#include <stdio.h>;
#include <stdlib.h>;
#include <unistd.h>;
int main()
{
  int pid;
  pid=fork();
  if(pid>0)
    exit(0);
  setsid();
  while(1)
{
 
}
return 0;
}


==================================
把自己的守护进程以服务的方式启动


chkconfig 可以用来检查,设置系统的各种服务


--add 增加所指定的系统服务
--del 删除所指定的系统服务,不再由chkconfig指令管理
--level <等级代号> 指定读系统服务要在哪一个执行等级中开启或关闭




先写一个脚本:另存为shenyid
#add for chkconfig
#chkconfig:35 80 10
#description:i am god
#processname:shenyid
/home/god/bin/god_me




然后执行:chkconfig --add shenyid
service shenyid start(假成功)








输出返回值
showage()
{
  echo $1 $2
}


showage 20 40




#返回值
showage1()
{
  return 123
}
showage1
echo $?




#返回值2
showage2()
{
 temp='123'
}
showage2
echo $temp




#返回值3
showage3()
{
  echo '123'
}
temp=`showage3`
#或者这样也行:temp=$(showage)
echo $temp






=======================================================
判断进程是否存在(有个文件当FLAG)
#add for chkconfig
#chkconfig:35 80 10
#description:i am god
#processname:shenyid


PID_FILE="/etc/shenyid.pid"
start()
{
  if [ -f $PID_FILE ] 
then
     echo "god_me is already running"
     else
      echo "123" > $PID_FILE
      echo "start god_me"
  fi
}
stop()
{
   rm $PID_FILE -f
   pkill god_me
   echo "god_me is stoped"
}


# /home/god/bin/god_me
   case $1 in
     xxoo)
     start 
     ;;
    ooxx)
     stop
    ;;
    *)
     echo "unknown"
   ;;
   esac


====================================================================
vi里输入:set nu显示行号
pkill 根据进程名,杀掉符合条件的进程
pkill god_me
pgrep god_me







































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值