2016-05-02 15 views
0

はなぜ、この行いますLinuxのシンボリックリンク()関数

#include <unistd.h> 
#include <stdio.h> 
#include <sys/stat.h> 

int main(void) { 
     const char filea[] = "../test/hunspell"; 
     const char fileb[] = "testa/dictionaries"; 
     int returnr; 
     returnr = symlink(filea, fileb); 
     printf("%d\n", returnr); 
     return returnr; 
} 

戻り0を、私はこの取得:

[[email protected] test]$ tree 
. 
├── symtest 
├── test 
├── testa 
│   └── dictionaries -> ../test/hunspell 
└── test.c 

[[email protected] test]$ pwd 
/home/gala/testing/test 

しかし、この:

#include <unistd.h> 
#include <stdio.h> 
#include <sys/stat.h> 

int main(void) { 
     const char filea[] = "/home/gala/testing/test/hunspell"; 
     const char fileb[] = "/home/gala/testing/testa/dictionaries"; 
     int returnr; 
     returnr = symlink(filea, fileb); 
     printf("%d\n", returnr); 
     return returnr; 
} 

戻り値-1失敗します。

なぜc symlink()関数は絶対パスでは失敗しますが、相対パスでは機能しますか?私は行方不明のものがありますか?

なぜ壊れていますか?

+0

「-1」は何を意味していますか? –

+0

オンラインで参考文献が見つかりません。おそらく整数を指し示す「静的」Stringsを見つけることができますが、どこを見失うかはわかります。私はやっていません。Javaだけで、libcとLinuxの関数をJavaの内部で使用するためにCライブラリブリッジを実行しています。 – Gala

+0

'man symlink'、エラーコードを見て、あなたのソースツリーでその定義を見つけるか、値。 –

答えて

2

あなたのパスは良いですか? を/home/gala/testing/testで実行した場合、filebのパスは/home/gala/testing/testa/dictionariesではなく/home/gala/testing/test/testa/dictionariesになるはずです。

関連する問題