编译工具在linux里面有g++等等(大多数linux安装系统时会默认安装)。
你可以先把cpp文件复制到虚拟机中(虚拟机和主机文件共享这里就不说了,网上很多方法自己找下),然后再终端运行"g++ 源程序.cpp -o 目标文件"(如果提示没有g++,表示你的linux中没有安装该编译工具(或者系统环境变量没有设置好),从网上下载安装包安装就行了)。
最后运行 “./目标文件” 就OK了。
使用函数,char *getfullpath(struct inode *inod)
{
struct dentry *dent = container_of(inod, struct dentry, d_inode)
if(dent == NULL)
printk("dent == NULL\n")
struct path *pat = container_of(dent, struct path, dentry)
if(pat ==NULL)
printk("pat == NULL\n")
else
printk("%p\n",pat)
struct file *filp = filp_open("/media/aaaaaa/", O_RDONLY, 0600)
if(filp ==NULL)
printk("file failed\n")
else
printk("%p\n",&(filp->f_path))
filp_close(filp,NULL)
char *path=NULL, *start=NULL
char *fullpath=NULL
printk("fullpath\n")
fullpath = kmalloc(PATH_MAX,GFP_KERNEL)
if(fullpath == NULL)
printk("kmalloc NULL\n")
printk("seccess\n")
if(!fullpath)
goto OUT
memset(fullpath,0,PATH_MAX)
path = kmalloc(PATH_MAX,GFP_KERNEL)
if(!path)
{
printk("path NULL\n")
kfree(fullpath)
goto OUT
}
memset(path,0,PATH_MAX)
//get the path
start = d_path(pat,path,PATH_MAX) //就是到这个函数挂,参数前面打印的不能在详细了 , 没有出现NULL的, 但是还是挂
if(start == NULL)
printk("d_path NULL \n")
printk("d_path seccess\n")
strcpy(fullpath,start)
kfree(path)
OUT:
return fullpath
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)