-3
Linuxの場合新しく作成されたプロセスに可変引数を渡す
私はtemp.cファイルを持っています。その中で私は、新しいプロセスを作成し、私はその
int main (int argc, char *argv[])
{
if((cid1 = fork()) == 0) //child1
{
res = execv(proc1, &argv[1]);
}
}
にすべての引数を渡す必要がある今、私はこれをコンパイルして
./a.out "arg1 arg2 arg3"
として実行し、今は新しいプロセスにこのARG1、ARG2とARG3を渡したいです私はそれのargcチェックしたときに作成されますが、その内側には、私に2
代わりの4
この不一致が起こるとPROC1内で私は値が"arg1 arg2 arg3"
であるが、ここで私はそうargv[1] = arg1, argv[2]=arg2, argv[3]=arg3
3引数をしたいだけ1引数を持っている理由を示し、
これを実現するには?
最初のプログラムを間違って呼び出すように聞こえるかもしれません。最初のプログラムで 'argc'を印刷しようとしましたか?それは4でなければなりませんが、あなたが見ていることを考えれば、それが2であれば私は驚くことはありません。 –
これはまさに私が期待していたものです。あなたは一つの引数を最初のプログラムに渡しています。これは 'arg1 arg2 arg3'です。同じ引数を変更せずに2番目のプログラムに渡します。コマンドラインから引用符を削除してみてください。そうすれば、彼らは別々の引数として渡されます。 –
Actulay実際には3つのプロセスと3つの引数が二重引用符でグループ化されているので、二重引用符を使用する必要があります。 –