kill父进程能够杀死子进程吗

sh/bash/dash/ksh/zsh等Shell脚本
回复
啪啪啪搞腚
帖子: 2
注册时间: 2013-06-13 12:37
系统: ubuntu

kill父进程能够杀死子进程吗

#1

帖子 啪啪啪搞腚 » 2013-06-13 13:06

如题,首先我想问一下,求高手解决
1. shell的kill指令和c语言的kill函数是不是同一个原理?

2.kill函数并不是直接杀死进程,而是发送一个指令,目标pid接受后执行exit是吗????

2. kill -9指令只是结束该进程吗?

3. 若该进程有父进程,它会不会变为僵尸.它的子进程会不会变成孤儿?

4.另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢

5. 怎样判断进程是否进入内核态,若进入内核态,kill-9,能否被阻塞

好了接下来我上测试过程,能否杀死子进程:

首先 打开bash 输入运行bash,运行bash,运行dash,运行bash,运行bash 然后ps
PID TTY TIME CMD
6550 pts/3 00:00:00 bash
6606 pts/3 00:00:00 bash
6662 pts/3 00:00:00 bash
6718 pts/3 00:00:00 dash
6719 pts/3 00:00:00 dash
6720 pts/3 00:00:00 bash
6776 pts/3 00:00:00 ps
然后kill -9 6719,继续ps
PID TTY TIME CMD
6550 pts/3 00:00:00 bash
6606 pts/3 00:00:00 bash
6662 pts/3 00:00:00 bash
6718 pts/3 00:00:00 dash
6802 pts/3 00:00:00 ps
难道6719上的子进程被我杀掉了吗??????
继续测试
#include <unistd.h>;

#include <sys/types.h>;

main ()

{

pid_t pid;

printf("fork! ");

pid=fork();

if (pid < 0)

printf("error in fork!");

else if (pid == 0){
/

printf("i am the child process, my process id is %d \n",getpid());
printf("我没死啊");
while(1){
int a=1,b=2;
a<b; //死循环 可以再top中直观看到子进程运行情况
}
}

else

{printf("i am the parent process, my process id is %d \n",getpid());


sleep(5); //睡眠父进程,让子进程运行
exit(0); //结束父进程。。。是这样结束吧。。。。
}


}




结果,父进程结束后子进程依旧在运行





于是我晕了 。。。。求大神帮忙
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#2

帖子 lilydjwg » 2013-06-14 19:03

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#3

帖子 lilydjwg » 2013-06-14 19:03

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#4

帖子 lilydjwg » 2013-06-14 19:05

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#5

帖子 lilydjwg » 2013-06-14 19:05

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#6

帖子 lilydjwg » 2013-06-14 19:05

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#7

帖子 lilydjwg » 2013-06-14 19:06

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#8

帖子 lilydjwg » 2013-06-14 19:06

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#9

帖子 lilydjwg » 2013-06-14 19:07

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#10

帖子 lilydjwg » 2013-06-14 19:07

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#11

帖子 lilydjwg » 2013-06-14 19:07

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#12

帖子 lilydjwg » 2013-06-14 19:11

代码: 全选

man 2 kill
给 kill 传递 pid 时,只给那个进程发信号。默认的信号是 SIGTERM。

进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。

shell 的 kill(1) 是 kill(2) 函数的包装。
另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。

PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
头像
灰色小狼
帖子: 4585
注册时间: 2008-12-06 10:38
系统: Arch

Re: kill父进程能够杀死子进程吗

#13

帖子 灰色小狼 » 2013-06-14 20:03

十一连发 :em20
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: kill父进程能够杀死子进程吗

#14

帖子 lilydjwg » 2013-06-14 21:07

灰色小狼 写了:十一连发 :em20
点「提交」后返回了一个空页面,然后我以为如果重复提交的话会因为有新帖而提示的,就刷新了好多次,直到论坛好像挂掉才暂时放弃,准备明天再重试呢……
回复