次のように、Cからexeclコマンドによって生成されたプロセスに2つのアドレス(32ビット)を渡す必要があります。最初のプログラムでは:
char buffer[18];
sprintf (&buffer[0],"%x\0 %x\0",lock, count);
arg_list[0]=&(buffer[0]);
arg_list[1]=&(buffer[10]);
execl ("/somedirectory/second_process", arg_list[0], arg_list[1], NULL);
次に、2番目のプログラムで、次のようにアドレスを解析しようとします。
if (argc != 2) {
printf ("PROCESS 2: Invalid number of arguments. Terminating %i\n", argc);
return -1;
}
if ( !(sscanf (argv[1],"%x",&lock)) || !(sscanf (argv[2],"%x",&count)) ) {
printf ("PROCESS 2: Problem with parameters passed in");
return -1;
しかし、私のプログラムは、渡されたパラメータが無効であるというエラーを出し続けます。受信した引数を出力しようとすると、プログラムがハングします。
printf ("The arguments passsed in are %s %s", argv[1], argv[2]);
修繕:
execl呼び出しを間違って行っていました。それはすべきだった:
execl ("/somedirectory/second_process", "second_process" arg_list[0], arg_list[1], NULL);
また、プロセス2:
if (argc != 3) {
printf ("PROCESS 2: Invalid number of arguments. Terminating %i\n", argc);
return -1;
}
渡される最初の引数は、以下のChrisが提案するように、プロセス名の引数であると想定されています。
ありがとう!