簡體   English   中英

如何在C程序中運行Python可執行文件(.py)(例如,使用execvp)?

[英]How to run a Python executable(.py) within a C program (for example by using execvp)?

我有這段用於運行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

請讓我知道如何解決此問題。

我將代碼更改為此,現在它可以按預期工作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM