我正在介绍操作系统课程,我们将使用 linux 中的 clone() 调用来创建线程,然后用它们做一些事情。我似乎根本无法使用 clone() 。
我已经将我的代码构造成一个类(称为Homework),它位于类(Course)的命名空间中。这可能是问题所在,因为这是我第一次真正使用命名空间关键字。我正在尝试使用我很少做的事情来变得更有经验,所以如果我犯了一个愚蠢的错误,那就这样吧。
我在网上找到了一些文章,但它们并没有太大帮助。我已经阅读了手册页,但我想我没有足够的经验来理解问题所在。一天!感谢您的帮助:)
我想有方法来捕捉类中的克隆:
// -- Header -- //
namespace _Course_ {
class _Homework_ {
...
int threadCatch(void *);
...
};
}
// -- Source -- //
namespace _Course_ {
void _Homework_::threadTest(void) {
...
// From web article
void **childStack;
childStack = ( void **) malloc(KILOBYTE);
clone(threadCatch, childStack, CLONE_VM | CLONE_FILES, NULL);
...
}
int _Homework_::threadCatch(void * ){
cout << getpid() << " cloned." << endl;
exit(0);
}
}
是我目前拥有的。我尝试了不同的方法(将捕手从课堂中取出,然后是命名空间)。它编译了两次,但是当我尝试在 make clean 后重新编译时,它告诉我函数(threadCreate)在多个位置声明。由于这些奇怪的错误,我确定我做错了什么,而不是破解它,我会采取一些意见。我应该做什么,或者我接下来应该读什么?谢谢!