【问题标题】:How to run a Python executable(.py) within a C program (for example by using execvp)?如何在 C 程序中运行 Python 可执行文件(.py)(例如使用 execvp)?
【发布时间】:2013-09-27 01:59:50
【问题描述】:

我有这段代码用于运行 Python 程序,我希望我的 shell 在我输入如下内容时运行 Python 程序: mysh> hello.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

请告诉我如何解决这个问题。

【问题讨论】:

    标签: python c process exec fork


    【解决方案1】:

    我将我的代码更改为这个,现在它按预期工作:

      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");
           }
         }
    

    【讨论】:

      猜你喜欢
      • 2015-02-20
      • 2022-01-12
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      相关资源
      最近更新 更多