如何让一个c语言程序后台运行,一个 C/C++ 程序如何将自身置于后台?_windows_开发99编程知识库...

什么是的最佳方式运行C 或C++程序已经从命令行启动将自身置于后台,相当于如果用户启动了从unix shell与'&'末尾的命令? ( 但用户未。) 这是GUI app,无需任何shell I/O,因此没有理由绑上shell推出后。 但我想有个shell命令启动自动来讲赢了而不用'&'( 或在Windows ) 。

在理想情况下,我需要一个解决方案,能对任何Linux,os X 和Windows 。 ( 或单独的解决方案,便于选择与#ifdef 。) 没事假定这应该是立刻完成的开头执行,而不是在中间某处。

一种解决方式是使用主程序是一个脚本来启动真正的二进制,小心地将其运用到背景中。 但是看起来令人十分不满意需要这些耦合shell/binary对。

另一个解决办法是将立即启动其他执行版本( 使用'系统'或CreateProcess ),使用相同的命令行参数,但是在后台把这个孩子,然后让父退出。 但这显得笨拙,而这个过程中实践本身背景。

Edited几个问题之后: 是的,fork( ) ( 或system( ) 或CreateProcess Windows ) 上有这么一种细菌的儿子我暗示在我原始的问题。 但是所有这些解决方案都使另一个进程来讲赢了的,然后终止原进程。 我在想如果有办法把EXISTING进程到背景中。 一个区别是,如果应用程序是以从录制的脚本进程id ( 可能供以后杀害或其他目的),创建的新分叉或进程都拥有不同id所以不会可控制任何启动脚本,如果你明白我想说什么。

Edit #2 :

fork( ) 不是很好的解决方案的OS X,其中'fork'的手册页说它是不安全的某些框架或库时所使用。 我试过,我的应用在运行时大声抱怨说: " 该进程派生并且无法使用此CoreFoundation功能带到安全的地方 必须exec( ) "

我思考是daemon( ),但是当我试穿OS X,这给了相同的错误信息,所以我想那只是幻觉而已包装fork( ) 并具有相同的限制。

原谅我的OS X centrism,但恰恰是系统在此刻在我面前。 但我确实想要找到一个方案去这三个平台。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值