注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

Linux Shell终端执行应用程序,如何结束终端和应用程序的进程父子关系?  

2010-08-10 13:20:40|  分类: linux、FreeBSD等 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

Linux Shell终端执行应用程序,如何结束终端和应用程序的进程父子关系?

 

1.       后台进程符 &

从别人那儿学到的一招,加上后台进程符,例如 “./Program &”。但是,加上之后,程序运行不正常。

2.       守护进程

我查了一下《UNIX环境高级编程》“9.5 会话期”一节,发现setsid可以用来结束父子关系。如果调用它,必然可以达到要求。

           我再查了“守护进程”,发现守护进程的实现大致也是这种方式。如下:

http://www.dnbcw.com/biancheng/linux/BQZZ8605.html

           int main()

{

         if(fork()==0)

{

         setsid();             //设置fork创建的子进程为进程组组长,结束原先的父子关系,并创建新的会话期

}

else

{

         exit(0);               //父进程退出

}

}

3.       其他方法

linux进程后台运行的几种方法

http://hi.baidu.com/ioah/blog/item/856b873f2596f2e955e7236d.html

 

解决!

原因是我在main 函数里面加入了while(getchar()),在加入了后台进程符之后,IO可能被重新定向,进而导致了问题。不应该使用这句代码,改成其他方式,即可。

 

 

by:zhanyonhu

 

 

  评论这张
 
阅读(1499)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016