Python プログラムを実行するためのこのコードがあり、次のようなものを入力すると、シェルが 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
これを修正する方法を教えてください。