解决方案:Linux 下使用clone()函数 ,编译后出现CLONE_VM未定义的错误

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kwinway/article/details/82219849

在使用clone函数时,需要在代码的开始(顶部)处引入一个宏和头文件,如下

#define _GNU_SOURCE   /*注意摆放位置*/         
#include <sched.h>   /*注意摆放位置*/   
#include<sys/types.h>
#include<sys/syscall.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
//  Linux下一个函数调用栈 2页 8kb
#define FIBER_STACK 8192
int do_something(void* s)
{
  printf(" pid = %d,LWP id = %lu",getpid(),syscall(SYS_gettid));
  return 0;
}
int main()
{
 void* stack;
 stack = malloc(FIBER_STACK);
                     /*栈顶在高地址处,向下生长*/
 clone(do_something,(char*)stack+FIBER_STACK,CLONE_VM|CLONE_VFORK,NULL);
}

“`

猜你喜欢

转载自blog.csdn.net/kwinway/article/details/82219849