1
execvp(argv[1], &argv[1])

execvp() の 2 番目の引数で正確に何が行われますか?

4

2 に答える 2

5

2 番目の引数は、呼び出されたプロセスの にNULLなる文字列の配列へのポインターである必要があります。argv

この配列の最初の要素はargv[0]、呼び出し先の になります。これは、パスと必ずしも同じではありません。たとえば、フル パスでプロセスを呼び出すことができますが、そのベース名を として渡しますargv[0]。また、一部のプログラムは、argv[0]. argv[0]有名な例は、Unix シェルがで始まると「ログイン シェル」として動作する-ため、基本的なloginプログラムで実行できることです。

char *argv[2] = {"-sh", NULL};
execvp("/bin/sh", argv);
于 2012-06-13T15:27:57.293 に答える
0

argvベクトルとして呼び出されたプログラムに渡されます。ドキュメントを引用します

execv()、execvp()、および execvpe() 関数は、新しいプログラムで使用可能な引数リストを表すヌル終了ストリングへのポインターの配列を提供します。最初の引数は、慣例により、実行中のファイルに関連付けられたファイル名を指す必要があります。

于 2012-06-13T15:28:31.280 に答える