免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: newcmd
打印 上一主题 下一主题

问个简单问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-06-17 13:57 |只看该作者
kill(getppid(), SIGKILL)
找到Shell的进程号,然后Kill掉

论坛徽章:
0
12 [报告]
发表于 2006-06-17 22:08 |只看该作者
原帖由 xiaonanln 于 2006-6-17 13:57 发表
kill(getppid(), SIGKILL)
找到Shell的进程号,然后Kill掉

这个方法可行!呵呵!非常感谢!!!

论坛徽章:
0
13 [报告]
发表于 2006-06-17 22:29 |只看该作者
原帖由 xiaonanln 于 2006-6-17 13:57 发表
kill(getppid(), SIGKILL)
找到Shell的进程号,然后Kill掉


有个问题,比如用户

#bash
bash-3.0# a.out
**
**

#

论坛徽章:
0
14 [报告]
发表于 2006-06-18 13:45 |只看该作者
原帖由 xiaonanln 于 2006-6-17 13:57 发表
kill(getppid(), SIGKILL)
找到Shell的进程号,然后Kill掉

的确有问题,如何保证父进程就是Login Shell呢?
在很多情况下getppid()得到并不是Login Shell.
是不是应该用getsid()呢?

论坛徽章:
0
15 [报告]
发表于 2006-06-23 17:09 |只看该作者
原帖由 crspo 于 2006-6-18 13:45 发表

的确有问题,如何保证父进程就是Login Shell呢?
在很多情况下getppid()得到并不是Login Shell.
是不是应该用getsid()呢?


呵呵!这倒是个问题,虽然对我来说这个问题不存在,但是大家一起讨论共同提高。

论坛徽章:
0
16 [报告]
发表于 2006-06-23 17:22 |只看该作者
执行完退出SHELL还是放在SHELL中执行吧,在SHELL脚本中KILL 进程登陆的SH 进程,注意进程必须是守护进程,否则进程相关终端退出,进程的默认动作也是退出。

[ 本帖最后由 windflowers1976 于 2006-6-23 17:25 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2006-06-23 22:03 |只看该作者
如果有root权限的话,可不可以在程序结束前执行/bin/login来实现呢?

论坛徽章:
0
18 [报告]
发表于 2006-06-26 14:25 |只看该作者
你说的所谓退出,其实就是让启动你应用进程的shell 进程要退出。该shell进程也是你应用进程的父进程,在应用退出之前通过获得父进程 的进程号,来杀掉父进程,再使应用进程结束,应该可以达到你的目的。

可以试试看,我自己还没有做过试验。

我以前用的是在.profile文件里加上shell结束命令exit,如“飞灰橙 ”兄所说的方法。
我建议用   “飞灰橙 ”兄的方法。运行一般的应用程序,最好不要用“root”用户登录,可以用其他的用户,如果需要某些权限的话,可以付给该用户权限。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP