<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: python перенаправление stdout</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7540.html</link>
    <description>День добрый , &lt;br&gt;есть такая задача , в программе запускается другая программа (утилита поиска вирусов)&lt;br&gt;она должна запускаться в фоновом режиме и вывод(stdout) этой утилиты должен &quot;пернаправляться&quot; в мою программу и уже она делает с ним все что угодно.&lt;br&gt;подскажите куда смотреть &lt;br&gt;пробовал popen2 + thread, но там идеологически не выходит &lt;br&gt;тк дискриптор стдаут становится таковым после того как вызов закончится &lt;br&gt;спасибо&lt;br&gt;</description>

<item>
    <title>python перенаправление stdout (NuINu)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7540.html#1</link>
    <pubDate>Wed, 13 Aug 2008 07:59:26 GMT</pubDate>
    <description>вот пример, файл redir_stdout.py:&lt;br&gt;#!/usr/bin/python&lt;br&gt;# -*- coding: koi8-r -*-&lt;br&gt;&lt;br&gt;import sys&lt;br&gt;import os&lt;br&gt;&lt;br&gt;&lt;br&gt;def main():&lt;br&gt;    log_stream = open(&quot;t2.log&quot;, &apos;a&apos;);&lt;br&gt;    STDOUT = sys.stdout.fileno()&lt;br&gt;    #получили новый файловый объект с новым дескриптором &amp;gt; 2, но по прежнему указывающий на открытый файл терминала&lt;br&gt;    new_base_stdout_d = os.dup(STDOUT)&lt;br&gt;    base_stdout = os.fdopen(new_base_stdout_d, &apos;w&apos;)&lt;br&gt;    #теперь на дискрипторе STDOUT откроем файловый объект(а верее, просто сдублируем дескриптор уже открытого файла), а старый поток закроем&lt;br&gt;    os.dup2(log_stream.fileno(), STDOUT)&lt;br&gt;    log_stream.close()&lt;br&gt;&lt;br&gt;    print &quot;Привет новый STDOUT!!!&quot;&lt;br&gt;    print  &amp;gt;&amp;gt;base_stdout, &quot;Привет старый STDOUT&quot;&lt;br&gt;    print &quot;-------------------------------------------------------------&quot;&lt;br&gt;    #надо сбросить буфера, иначе они запишуться после вывода дочернего процесса(можно конечно при открытии сделать буфер поменьше)&lt;br&gt;    sys.stdout.flush()&lt;br&gt;    os.system(&apos;cat redir_stdout.py&apos;)&lt;br&gt;    print &quot;-------------------------------------------</description>
</item>

</channel>
</rss>
