First, I wrote a c++ code as follows:
#include <cstdio>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b) == 2)
printf("%d
",a+b);
return 0;
}
I use g++ -o a a.cpp
to complie it.
Afterwards, I wrote python code as follows:
import os,sys
sys.stdin = open("./data.in","r")
sys.stdout = open("./data.out","w")
pid = os.fork()
if pid == 0:
cmd = ["./a","./a"]
os.execv(cmd[0],cmd)
However, the data.out
file contains nothing. That is to say, the child process did not inherit stdin and stdout from his parent process. But when I wrote a c++ code as follows:
#include<unistd.h>
#include<cstdio>
int main()
{
freopen("data.in","r",stdin);a
freopen("data.out","w",stdout);
int pid = fork();
if(pid == 0)
{
char* cmd[]= {"./a","./a"};
execv(cmd[0],cmd);
}
return 0;
}
I got the right answer in the data.out
, that is to say execv works in the c++ code.
So, what I should do to let execv also works in python? I really need this function to work, could anybody can tell me? thanks a lot!
data.in
contains the following:
1 1
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…