Linux写一个shell脚本,要实现在键盘输入一个进程号,输出这个进程号的子进程pid,怎么写?

Linux写一个shell脚本,要实现在键盘输入一个进程号,输出这个进程号的子进程pid,怎么写?,第1张

这个只能找出子进程

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()函数实现创胡和建进程。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8246788.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存