
read -p "码如请输入一个进程号:" value
wym=`ps -ef|sed -e 's/[ \t][ \t]*/|/g'|cut -d "|" -f "2-4"|grep "|${value}|"|cut 迟码启-d "|" -f "1"`
echo "它的子进程:"
echo "$wym"
这个可以找出所有的后代进程:通过递归调用本身函数。
read -p "输入模渣一个进程号:" p
function mj(){
pid=`ps -ef|sed 's/ */|/g'|cut -d "|" -f 2-3|grep "|$1$"`
for ppid in $piddo
num=`echo "$ppid"|sed "s/|$1//g"`
echo "$num"
mj $num
done
}
mj $p
这个在Linux和在Windows下的实裤困盯现方法是完全不一样的。因为两个系统创建进程的函数不同。其中Windows环境下的实现非常复杂。给你两个例子供你参考吧。
Linux环境下的实现:
#include <stdio.h>
int main(int argc, char *argv[])
{
int pid1,pid2
/*调用fork函数创建进程1*/
if ( ( pid1=fork() ) <0 )
{ /*fork()返回值为负数,则创建进程失败*/
printf( "ProcessCreate Failed!")
exit(-1)
}
/**
/*fork()返回值为0,则创建子进程成功且当前进程为子进程
*/
if ( ( pid1=fork() ) == 0 )
{
printf( "b\n" ) //子进程1输尺瞎出’b’
}
/**
/*创建子进程2
***/
if ( ( pid2=fork() ) <0 ) /*fork()返回值为负数,则创建进程失败*/
{
printf( "ProcessCreate Failed!")
exit(-1)
}
/**
/*fork()返回值为0,则创建子进程成功且当前进程为子进程
*/
if ( ( pid2=fork() ) == 0 )
{
printf( "c\n" ) //子进程2输出’c’
}
/*fork()返回值大于0,则当前进程为父进程*/
else
{
wait(NULL)
printf( "a\n" ) //父进程输出’a’
exit(0)
}
return 0
}
Windows环境下的实现没有写。大概需要使用包含在windows.h中的头文件中的CreateProcess()函数实现创胡和建进程。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)