C语言里,只能由父进程派生子进程 ,而不是由子进程的子进程派生
ps -ef
源头进程是initc里面
创建一个与原进程完全相同的进程,原来的进程成为新进程的父进程
需要引入头文件
<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