背景:@import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
例如百度云存儲(chǔ)的路徑是 /Users/Biao/Baidu/百度云同步盤,路徑中有中文字符。
有一個(gè) Qt 工程叫 QtTest 存儲(chǔ)在 百度云同步盤 里面: /Users/Biao/Baidu/百度云同步盤/QtTest
因?yàn)?Qt 工程 QtTest 的路徑中有中文字符,所以 QtCreator 是不能編譯這個(gè) Qt 工程的。
于是我們就想把這個(gè)含有中文的路徑映射到一個(gè)沒有中文的路徑,例如 /Users/Biao/BaiduYun,
修改這兩個(gè)目錄中的任何一個(gè)目錄里的數(shù)據(jù),另一個(gè)目錄會(huì)自動(dòng)同步,但是路徑卻不一樣。
很多不支持路徑中有中文的軟件也可以使用此方法解決。
如果在 Linux 上則很好解決,使用 mount --bind source_directory destination_directory 則就完成了。
但是在 Mac 上卻不支持這個(gè)命令,不過我們可以用下面兩個(gè)小程序來創(chuàng)建和刪除文件夾的硬鏈接。
一、創(chuàng)建文件夾的硬鏈接
#include <unistd.h>
#include <stdio.h>
// Build: gcc -o hlink hlink.c -Wall
int main(int argc, char *argv[]) {
printf("Usage: assume the program name is hlink\n");
printf("sudo ./hlink source_directory destination_directory\n");
if (argc != 3) return 1;
int ret = link(argv[1], argv[2]);
if (ret == 0) {
printf("\n");
printf("****** Create hard link successful ******\n");
} else {
perror("link");
}
return ret;
}
1. 在終端里使用命令編譯程序,生成可執(zhí)行文件 hlink:
gcc -o hlink hlink.c -Wall
2. 創(chuàng)建 /Users/Biao/Baidu/百度云同步盤 的硬鏈接 /Users/Biao/BaiduYun
(首先BaiduYun這個(gè)目錄是不存在的,是在執(zhí)行下面創(chuàng)建硬鏈接的命令后自動(dòng)生成的)
./hlink /Users/Biao/Baidu/百度云同步盤 /Users/Biao/BaiduYun
二、刪除文件夾的硬鏈接
#include <stdio.h>
// Build: gcc -o hunlink hunlink.c
int main(int argc, char *argv[]) {
printf("Usage: assume the program name is hunlink\n");
printf("sudo ./hunlink destination_directory\n");
if (argc != 2) return 1;
int ret = unlink(argv[1]);
if (ret == 0) {
printf("\n");
printf("****** Delete hard link successful ******\n");
} else {
perror("unlink");
}
return ret;
}
1. 在終端里使用命令編譯程序,生成可執(zhí)行文件 hunlink:
2. 刪除 /Users/Biao/Baidu/百度云同步盤 的硬鏈 /Users/Biao/BaiduYun
(注意,這里的參數(shù)是/Users/Biao/BaiduYun,而不是源文件夾 /Users/Biao/Baidu/百度云同步盤)
./hunlink /Users/Biao/BaiduYun