2017-09-19 2 views
-1

私はexecvを使って元の関数に渡されるコマンドを呼び出すプログラムをC言語で書いています。Cでexecvに渡された引数

私は "./program echo" hello ""と入力し、プログラムのforkの子はbashコマンド "echo hello"を使います。

execvのmanページは非常に曖昧です。「最初の引数は、慣例により、実行されているファイルに関連付けられているファイル名を指す必要があります。私はこの権利を理解しているかどうかを判断しようとしています。

execv(argv[0], argv); 

しかし、私はARGV [0]だけ "./program" を含むであろうことを知っている:私が見てきた例から

が、これはEXECVが呼び出されるべきかです。だから、私はこれをexecのものと同じ機能にすることを考えていますが、例で見たことではありません。私はそれがこのする必要があります知っているから

execv(argv[1],argv+1); 

または

execv(argv[1],argv+2); 

は、誰も私がこれを理解するのに役立つことはできますか?ありがとう。

+1

てみましたか? – EOF

答えて

0

execvのFIRSTパラメータはexecのアプリケーションです。 "/ bin/echo" - アプリケーションを見つけるために環境変数の利用可能性に頼りたくない場合があるので、完全なパスが優先されます。 EXECVする

2番目のパラメータは、最初のパラメータのconstの文字列のNULLで終わる配列繰り返し「/ binに/エコー」です:あなたはそれを

char *const params = { "/bin/echo", "hello", NULL }; 

execv("/bin/echo", params); 
+0

意味があり、うまくいった!ありがとうございました。 – zdale

関連する問題