栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Linux中使用C在后台启动进程

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Linux中使用C在后台启动进程

该“logcat的”命令似乎是Android开发-
这或许可以解释命令的奇位置。

您必须解决的关键操作是确保关闭当前的标准输入(终端)并

/dev/null/
为输入设备打开:

close(0);if ((fd = open("/dev/null", O_RDONLY)) != 0)    ...error - failed to open /dev/null!

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


我认为您想做的是:

  1. 从命令行运行启动程序,它将在“终端”上连接标准输入,标准输出和标准错误。
  2. 在程序内部,您想替换标准输入,使其来自
    /dev/null
  3. 您只希望保留标准输出-您要
    logcat
    写入当前的标准输出。
  4. 您可能也想单独留下标准错误。

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

现在,您可能希望输出到

/dev/console
;
如果是这样,则修改代码open是合理的
/dev/console
。但是,
/dev/null
如果您无法打开
/dev/console
,则退后给您是不合理的;您的程序应报告错误并失败(因为将logcat写入
/dev/null
!没有意义)。确保使用
O_NOCTTY
标志打开控制台,这样它就不会成为守护程序的控制终端。

我最后要发表的评论是:

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

发生这种情况时,我不太喜欢。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号