我的时候可能会要求一个白痴的问题很抱歉,但我在C的血腥初学者现在我的问题是,我需要访问两个变量,在主宣称,在一个子进程,并修改它们。 听起来很简单,但我必须使用克隆和反推的变量,以我的数组后,他们完全搞砸了concerining值。
int main (){
uint64_t N = 10000000;
uint64_t tally = 0;
int status;
void** child_stack = (void**)malloc(65536);
uint64_t** package = (uint64_t**)malloc(sizeof(uint64_t*)*2);
package[0] = &tally;
package[1] = &N;
pid_t cpid;
cpid = clone(child_starter, &child_stack, CLONE_VM , (void*)package);
waitpid(cpid, &status, __WCLONE);
return 0;
}
在child_starter功能如下所示:
int child_starter(void* package){
printf( "Tally is in the child %" PRIu64 "\n", *((int64_t**)package)[0] );
return 0;
}
因为理货是0,我认为我的printf实际上应该打印出0,但它更像是从运行140541190785485变更运行..
希望你能帮我 :)