【发布时间】:2016-08-18 05:25:03
【问题描述】:
我正在使用这个函数调用 clone()
clone (fun, (char*)stack + 0x500000, SIGCHLD | CLONE_FILES | CLONE_FS, arg);
其中 fun 是一个函数:int fun(void*), stack = malloc (0x500000), arg 是 void* 类型。
我想知道无效参数错误的其他一些可能原因。
我已检查堆栈不为 NULL。
【问题讨论】:
-
你检查过那个堆栈吗!= NULL ?
-
perror()的“无效参数”输出与宏EINVAL对应的错误号相同。您是否阅读过clone()的手册页?它列举了此代码的大量原因,但其中大多数与特定的错误标志组合有关。一个不是child_stack参数为零(NULL)。请注意,malloc()在失败时返回NULL。 -
@socketpair 我检查了堆栈不为 NULL。