kill父进程能够杀死子进程吗
-
- 帖子: 2
- 注册时间: 2013-06-13 12:37
- 系统: ubuntu
kill父进程能够杀死子进程吗
如题,首先我想问一下,求高手解决
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); //结束父进程。。。是这样结束吧。。。。
}
}
结果,父进程结束后子进程依旧在运行
于是我晕了 。。。。求大神帮忙
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父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
代码: 全选
man 2 kill
进程在收到信号后执行自己注册的操作。如果没有注册操作,那么执行默认操作(大部分信号的默认操作是杀死进程)。
shell 的 kill(1) 是 kill(2) 函数的包装。
因为 fcitx 有自己的信号处理器。可能某个地方出问题了造成它没有退出。试试使用 SIGKILL 信号(-9)。另外linux下的搜狗输入法很不稳定,崩溃的时候我kill该进程(fcitx) 为什么结束不掉呢
PS: 你贴的代码乱糟糟的没法看。注意发帖时工具栏上那排按钮的使用。
- 灰色小狼
- 帖子: 4585
- 注册时间: 2008-12-06 10:38
- 系统: Arch
Re: kill父进程能够杀死子进程吗
十一连发 

- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: kill父进程能够杀死子进程吗
点「提交」后返回了一个空页面,然后我以为如果重复提交的话会因为有新帖而提示的,就刷新了好多次,直到论坛好像挂掉才暂时放弃,准备明天再重试呢……灰色小狼 写了:十一连发