免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12135 | 回复: 17

如何让一个后台进程能接收终端输入,实现交互 [复制链接]

论坛徽章:
0
发表于 2011-11-23 17:18 |显示全部楼层
RT
现在有一个运行的后台进程(&),需要从终端read数据,怎么实现??求大神

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2011-11-23 17:20 |显示全部楼层
RT
现在有一个运行的后台进程(&),需要从终端read数据,怎么实现??求大神
cxm240 发表于 2011-11-23 17:18



    既然要交互,那就把它放在前台执行。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-11-23 17:22 |显示全部楼层
晕,既然是后台程序,那么 stdout,stdin,stderr 三个输入输出的管道都被屏蔽了,你如何让程序接受你的输入?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2011-11-23 17:39 |显示全部楼层
晕,既然是后台程序,那么 stdout,stdin,stderr 三个输入输出的管道都被屏蔽了
snow888 发表于 2011-11-23 17:22



    后台进程的 std* 这几个倒是都有效,不过向控制台写没有问题,读的话就会导致该进程进入 STOP 状态。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-11-23 20:57 |显示全部楼层
后台进程的 std* 这几个倒是都有效,不过向控制台写没有问题,读的话就会导致该进程进入 STOP 状 ...
MMMIX 发表于 2011-11-23 17:39



    俺记得向控制台读、写都不可能,否则就不是 deamon 程序了。

其实用 & 不是一个好方法,一般而言,俺们写deamon 程序都是通过 fork 生成子进程,然后从子进程杀掉父进程,并同时将 0 ,1 ,2 都干掉。

具体的内容,俺在 blog 中有一个完整的例子,楼主如果想写 deamon 程序,不妨看看。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2011-11-23 22:05 |显示全部楼层
本帖最后由 MMMIX 于 2011-11-25 09:20 编辑
俺记得向控制台读、写都不可能,否则就不是 deamon 程序了。

其实用 & 不是一个好方法,一般而 ...
snow888 发表于 2011-11-23 20:57



    後臺進程(background process)和守護進程(daemon process)不完全是一回事。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-11-23 22:11 |显示全部楼层
後臺進程(background process)和守護進程(daemon process)完全是兩回事。
MMMIX 发表于 2011-11-23 22:05



    晕,看混了,俺看成守护进程了。

论坛徽章:
0
发表于 2011-11-24 09:00 |显示全部楼层
我是想知道有没有什么函数能将进程自身提到前台运行

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2011-11-24 09:27 |显示全部楼层
我是想知道有没有什么函数能将进程自身提到前台运行
cxm240 发表于 2011-11-24 09:00



    前台/后台这个是 Shell 在做。

论坛徽章:
0
发表于 2011-11-24 12:44 |显示全部楼层
我自然知道是shell在做,但是shell也是用的什么方法来做的吧,可能是某些函数,也可能是shell里面的算法
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP