2004年05月24日 星期一 10:52
1.使用popen2是创建一个进程,而不是线程。Pope2 fork一个进程,接着用你的程序覆盖这个进程,然后在父子进程间创建一对pipe(也就是用系统api-pipe(fds)),设定 这对pipe的I/O属性,让其一为读,另一为写。实现父子进程间的通讯。 2.从你的命令行程序的名字com来看,我大胆猜测你这个是不是一个通讯口?这个在unix系统和windows系统下是有很大区别的,请注意。不过这个也不应该影响到父子进程间的通讯。子进程只不过简单地把信息print到stdout,就像平时的一般程序就行,而因为这个stdout是被修改了定向(用系统调用dup2实现),它不是发送给普通的console,而是定向给了父进程。 3.因为stdin, stdout这些FILE*缺省都有buffer,你可以在com的程序里面一开始就调用setbuf(stdout, NULL),这样就disable了buffer,子进程打印的信息就不会被buffer,立马送给父进程。你的问题可能就是这样。不过这样做有缺点,去掉文件流的buffer,程序如果有很多这些输出操作,会影响执行效率。 你这个问题用popen2肯定没有问题(另:popen2好像是在popen2模块里,而不是在os里面吧?), 因为我就用这个解决过相同性质的问题,顺利的很,一直没有问题。 -----邮件原件----- 发件人: miao wen [mailto:tomcatwm at hotmail.com] 发送时间: 2004年5月22日 11:27 收件人: python-chinese at lists.python.cn 主题: [python-chinese] [?e¨¦?¡¤??¨®?¨²]python script ¦Ì¡Â¨®?3¨¬D¨°?¨º¨¬a ¡ê???3¨¬1¨¹¨¤¨ª 我现在再RH9下用python 2.2.X 编写script 程序 交互一个检索系统。 改系统可以以一个命令行形式启动,利用 命令行,在shell里交互检索。 别的同门有用perl 写的,都大同小异。 我用sin,sout = os.popen2('com') 来创建子线程,调用那个系统('com'是那个系统的启动命令)之后用file sin, sout “虚拟“子线程的stdin and stdout. 一个非常郁闷的问题是,我好像无法进行交互操作。 根据这个对象的api,我找到的,只有当sin 关闭后,我才能从sout读出子线程的输出结果。 我的天啊,但是有的时候我需要,读出子线程的输出,然后再作为参数输回系统,完成检索。可是一旦我关闭了sin,就没法再进行输入操作了。 那么我似乎只能进行“一个来回”-“输入-关闭输入-读出输出” 不知道再其他的script 程序里面是不是也是这样?比如perl,如果是,那么他们是怎么搞定类似的交互性操作的? 因为再进行一个查询的时候不能中断系统(子线程)否则,检索结果会有不同。 或者我干脆就用错了,应该用os.exec 什么的? 谢谢大家帮忙 _________________________________________________________________ MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*. http://join.msn.com/?pageþatures/virus _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese
2004年05月24日 星期一 12:26
info,您好! 问题还没解决啊,请各位帮忙了。 ======= 2004-05-24 10:40:34 您在来信中写道:======= >Zoom.Quiet,您好! > > 怎样使用unicode方式呢?在字符串前加u吗? > >======= 2004-05-24 10:34:38 您在来信中写道:======= > >>Hollo info: >> >> 如果使用 vim 设置 unicode 模式来看,是没有问题的………… >>谁有过经验来者? >> >> >>/******** [2004-05-24]10:33:56 ; info wrote: >> >>info at xichen.com> python-chinese,您好! >>info at xichen.com> >>info at xichen.com> 我使用的是freebsd4.8的系统+kde3.1,在kde下能正确显示中文和繁体字。通过内置的编辑工具也能以gb18030、gb2312和utf-8方式查看代码中的中文,但是用utf-8方式查看源文件显示为乱码。 >> >> >>info at xichen.com> 致 >>info at xichen.com> 礼! >> >> >>info at xichen.com> info >>info at xichen.com> info at xichen.com >>info at xichen.com> 2004-05-24 >> >> >>********************************************/ >> >>-- >>Free as in Freedom >> >> Zoom.Quiet >> >>#=========================================# >>]Time is unimportant, only life important![ >>#=========================================# >> >>sender is the Bat!2.02 CE >> >>_______________________________________________ >>python-chinese list >>python-chinese at lists.python.cn >>http://python.cn/mailman/listinfo/python-chinese >> > >= = = = = = = = = = = = = = = = = = = = > > > 致 >礼! > > > info > info at xichen.com > 2004-05-24 > >_______________________________________________ >python-chinese list >python-chinese at lists.python.cn >http://python.cn/mailman/listinfo/python-chinese > = = = = = = = = = = = = = = = = = = = = 致 礼! info info at xichen.com 2004-05-24
Zeuux © 2024
京ICP备05028076号