linux启动进程 c,使用C在Linux后台启动一个进程

‘logcat’命令似乎适用于Android开发 – 这可能解释了命令的奇怪位置.

必须修复的关键操作是确保关闭当前标准输入(终端)并打开输入设备的/ dev / null /:

close(0);

if ((fd = open("/dev/null", O_RDONLY)) != 0)

...error - failed to open /dev/null!

这意味着您的守护进程子进程将不会从终端读取任何内容.

我认为你想做的是:

>从命令行运行启动程序,命令行将标准输入,标准输出和标准错误连接到“终端”.

>在程序内部,您希望替换标准输入,使其来自/ dev / null.

>您希望单独保留标准输出 – 您希望logcat写入当前标准输出.

>您可能也想单独留下标准错误.

在程序中的某个时刻,你正确地做你的daemonization(从@ bstpierre的答案借用链接),确保你所连接的终端不是你的控制终端,这样发送到终端的中断和挂断不会影响你的守护进程.管道比您设置的更简单 – 您应该处理标准输入并保持标准输出和标准错误不变(而不是更改输出并保持输入不变).

现在,您可能希望输出转到/ dev / console;如果是这样,那么修改代码以打开/ dev / console是合理的.但是,如果无法打开/ dev / console,则退回/ dev / null是不合理的;你的程序应该报告错误并失败(因为将logcat写入/ dev / null没有意义!).确保使用O_NOCTTY标志打开控制台,这样它就不会成为守护程序的控制终端.

我最后的评论是:

>您确定要在其他用途​​中使用随机文本显示在终端或控制台上吗?

当发生这种情况时,我不太喜欢它.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值