1

私はcでフォークし、子プロセスからpythonプログラムを呼び出し、親から文字列を渡します。次に、この文字列を Python プログラムで出力します。私はこのコードを持っています:

void
forking ()
{
int thepipe[2];
char someString[] = "Hello, world!\n";
char readbuffer[80];

if (pipe (thepipe) < 0)
    {
    perror ("pipe error");
    exit (EXIT_FAILURE);
    }
pid_t pid = fork ();
if (pid < 0)
    {
    perror ("Fork failed");
    }
if (pid == 0)
    {
    close (thepipe[1]);
    execl(PYTHONPROGRAM, PYTHONPROGRAM);
    exit (0);
    }
else
    {
    close (thepipe[0]);
    write (thepipe[1], someString, (strlen (someString) + 1));
    wait (NULL);
    }
}

Pythonプログラムからパイプを読み取るにはどうすればよいですか? os.fdopen を使用する必要があります。以下のコードは機能しませんでした。

import os,sys
r, w = os.pipe()
os.close(w)
r = os.fdopen(r)
str = r.read()
print("text =", str)
sys.exit(0)
4

0 に答える 0