Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

How to realize the functions related to soft links in linux

Shulou Source: shulou.com Published: 2022-06-01 12:21:49 10月21日 Update

This article mainly introduces "linux how to achieve soft link-related functions", in daily operation, I believe many people in linux how to achieve soft link-related functions on the question of doubt, small make up access to all kinds of information, sorting out simple and easy to use operation methods, hope to answer "linux how to achieve soft link-related functions" doubts helpful! Next, please follow the small series to learn together!

/* * linux/fs/minix/symlink.c * * Copyright (C) 1991, 1992 Linus Torvalds * * minix symlink handling code */

#ifdef MODULE#include #endif

#include

#include #include #include #include #include

static int minix_readlink(struct inode *, char *, int);static int minix_follow_link(struct inode *, struct inode *, int, int, struct inode **);

/* * symlinks can't do much... *///Function set for operating soft link files, assign to inode struct inode_operations minix_symlink_inode_operations = { NULL, /* no file-operations */ NULL, /* create */ NULL, /* lookup */ NULL, /* link */ NULL, /* unlink */ NULL, /* symlink */ NULL, /* mkdir */ NULL, /* rmdir */ NULL, /* mknod */ NULL, /* rename */ minix_readlink, /* readlink */ minix_follow_link, /* follow_link */ NULL, /* bmap */ NULL, /* truncate */ NULL /* permission */};//Open the file corresponding to the soft chain static int minix_follow_link(struct inode * dir, struct inode * inode, int flag, int mode, struct inode ** res_inode){ int error; struct buffer_head * bh;

*res_inode = NULL; if (! dir) { dir = current->fs->root; dir->i_count++; } if (! inode) { iput(dir); return -ENOENT; } if (! S_ISLNK(inode->i_mode)) { iput(dir); *res_inode = inode; return 0; } if (current->link_count > 5) { iput(inode); iput(dir); return -ELOOP; } //Read the first block of the file if (! (bh = minix_bread(inode, 0, 0))) { iput(inode); iput(dir); return -EIO;} iput(inode); current->link_count++; //Open the file corresponding to the saved filename in b_data error = open_namei(bh->b_data,flag,mode,res_inode,dir); current->link_count--; brelse(bh); return error;}//Read the contents of the soft chain file, i.e. the file path static int minix_readlink(struct inode * inode, char * buffer, int bufflen){ struct buffer_head * bh; int i; char c;

if (! S_ISLNK(inode->i_mode)) { iput(inode); return -EINVAL; } if (buflen > 1023) buflen = 1023; bh = minix_bread(inode, 0, 0); iput(inode); if (! bh) return 0; i = 0; while (ib_data[i])) { i++; put_fs_byte(c,buffer++); } brelse(bh); return i;}

At this point, on "linux how to achieve soft link-related features" learning is over, I hope to solve everyone's doubts. Theory and practice can better match to help you learn, go and try it! If you want to continue learning more relevant knowledge, please continue to pay attention to the website, Xiaobian will continue to strive to bring more practical articles for everyone!

Tags: File link function learning content more help practical next function file name article method time theory knowledge article structure website material Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno MariaDB OPPO Reno Shulou Information Shulou Tech Info Shulou Technology