このプログラムは、最初にフォークされ、次に execlp によって実行されます。これは、累乗と基数の 2 つの数値でプログラム パスを呼び出します。
int main(int argc, char *argv[])
{
int pid = getpid();
printf("Calculator Process[%d]: started\n",pid);
double base, power;
sscanf(argv[1],"%d",&base);
sscanf(argv[2],"%d",&power);
double number = pow(base,power);
printf("Calculator Process[%d]: %d ^^ %d == %d\n",pid,base,power,number);
printf("Calculator Process[%d]: exiting\n",pid);
return 1;
}
基数 3、累乗 5 を渡すとしましょう。これが得られるものです。
base = 4263 -- これもたまたま PID です。 パワー = -1 累乗: 714477568
発信者番号:
execlp("./calculator","./calculator",argv[1],argv[2],(char*)0);
argvs を出力すると、その値が取得されます (char* として取得されますが、キャストは失敗します)。
値を正しく読み取れない理由はありますか?