该程序首先被分叉,然后由 execlp 运行,它调用程序传入两个数字,一个幂和一个基数。
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*,但转换失败)。
任何想法为什么我无法正确读取值?