gpt4 book ai didi

python - 如何在 C 程序中运行 Python 可执行文件(.py)(例如使用 execvp)?

转载 作者:行者123 更新时间:2023-11-30 15:45:25 24 4
gpt4 key购买 nike

我有这段用于运行Python程序的代码,当我输入如下内容时,我希望我的shell能够运行Python程序:mysh> 你好.py

但是 hello.py 没有传递到 execvp 中的/usr/bin/python,我需要帮助弄清楚如何正确地将参数传递给 execvp。

 if (pid==0)   // child process         
{

if (py_flag==1)
execvp("/usr/bin/python",argv);
else
{

execvp(argv[0],argv);
perror("error");
}
}

这是我收到的结果:

./basic_shell 
mysh> hello.py
I am a python program
Python 2.6.6 (r266:84292, May 27 2013, 05:35:12)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

虽然我希望收到这样的结果:

$ python hello.py 
sys.argv[0] = hello.py

请告诉我如何解决此问题。

最佳答案

我将代码更改为以下内容,现在它可以按预期工作:

  if (pid==0)   //child process 
{

if (py_flag==1)
{
char *new_argv[2];
new_argv[0]="/usr/bin/python";
new_argv[1]=argv[0];
new_argv[2]=0;
//execvp("/usr/bin/python",argv);
execvp(new_argv[0],new_argv);
}
else
{

execvp(argv[0],argv);
perror("error");
}
}

关于python - 如何在 C 程序中运行 Python 可执行文件(.py)(例如使用 execvp)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com