Python论坛  - 讨论区

标题:答复: [python-chinese] [?eé?·??ó?ú]python script μ÷ó?3ìDò?êìa £???3ì1üàí

2004年05月24日 星期一 10:52

Tan Lihui tony at exchange.ricsson.com
Mon May 24 10:52:49 HKT 2004

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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年05月24日 星期一 12:26

info at xichen.com info at xichen.com
Mon May 24 12:26:15 HKT 2004

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


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号