我试图模仿Unix命令
ln -sf /path/to/file /path/to/link
使用Perl
symlink (/path/to/file /path/to/link)
Perl是否删除现有目标文件并创建类似于-s -f选项的符号链接?
答案 0 :(得分:5)
symlink(2)
只是使用相同的名称(EEXIST
)调用操作系统调用,当" newpath
已经存在"时返回错误-f
。 / p>
如果您想实施unlink($new_qfn);
symlink($old_qfn, $new_qfn)
or die("Can't create symlink \"$new_qfn\": $!\n");
,可以使用
if (!symlink($old_qfn, $new_qfn)) {
if ($!{EEXIST}) {
unlink($new_qfn)
or die("Can't remove \"$new_qfn\": $!\n");
symlink($old_qfn, $new_qfn)
or die("Can't create symlink \"$new_qfn\": $!\n");
} else {
die("Can't create symlink \"$new_qfn\": $!\n");
}
}
但是,以下方面可以更好地处理竞争条件:
ln
$ strace ln -sf a b
...
symlink("a", "b") = -1 EEXIST (File exists)
unlink("b") = 0
symlink("a", "b") = 0
...
使用后一种方法。
string securityToken = "XXXXXXXXXXXXXXXX";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://webapi.teamviewer.com/api/v1/devices?groupid=g65527463");
request.Headers.Set("Authorization", "Bearer " + securityToken);
request.Method = "GET";
WebResponse response = request.GetResponse();
result = ((System.Net.HttpWebResponse)response).StatusCode.ToString();
if (result == "OK")
{
// YOUR CODE HERE...
};
答案 1 :(得分:2)
这很容易弄清楚自己。我们试试吧
.
带
ls -li link_to_FILE.txt
# 2415940160 lrwxrwxrwx. ... link_to_FILE.txt -> FILE.txt
打印
Cant make it: File exists at -e line 1.
我检查具有相同inode编号的原始文件(链接)是否仍然存在。
所以,不,它不会覆盖现有文件。
symlink的页面表示没有选项 f orce。