Я знакомлюсь с курсом по операционным системам, и мы будем использовать вызов clone () в linux для создания потоков, а затем делать с ними кое-что. Кажется, у меня проблемы с использованием только clone ().
Я структурировал свой код в один класс (называемый Домашняя работа ), который находится в пространстве имен для класса ( Курс ). Это может быть проблемой, так как я впервые использовал ключевое слово namespace. Я пытаюсь использовать то, что редко делаю, чтобы стать более опытным с этим, поэтому, если у меня есть глупая ошибка, пусть будет так.
Я нашел несколько статей в Интернете, но они мало чем помогли. Я прочитал справочную страницу, но, думаю, у меня недостаточно опыта, чтобы понять, в чем проблема. Когда-нибудь! Спасибо за любую помощь:)
Я хочу иметь метод для отлова клонов внутри класса:
// -- 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) объявлена в нескольких местах. Из-за этих странных ошибок, я уверен, что я делаю что-то не так, и вместо того, чтобы взломать это, я приму некоторые мнения. Что мне делать или что читать дальше? Спасибо!