Silinen bir Unix soket dosyasını tekrar oluşturamazsınız.
Aslında, aynı yolla başka bir soket dosyası oluşturabilirsiniz (soket dosya tanımlayıcısını aynı adrese tekrar bağlamaya çalışarak), ancak bağlanmaya çalışan herhangi bir istemci bağlanmak yerine "Bağlantı reddedildi" alır. ilk etapta kendisine bağlı olan soket.
Bunun nedeni, Unix soketlerinin temel olarak yollara değil, düğümlere bağlı olmasıdır . Netcat'ınızın Unix soketlerini destekleyip desteklemediğini kolayca kontrol edebilirsiniz:
nc -lU /tmp/old_sock &
[1] 19241
ln -f /tmp/old_sock /tmp/new_sock; rm /tmp/old_sock
# or mv /tmp/old_sock /tmp/new_sock
echo yup | nc -U /tmp/new_sock
yup
Programınızın yapabileceği tek şey eski soketi kapatmak, başka bir tane oluşturmak ve aynı adrese bağlamak. Bir dosyanın kaldırılmasından haberdar olmak için inotify(7)
Linux'ta, kqueue(2)
BSD'de veya stat(2)
düzenli olarak yolda (başka bir dosyadaki gibi) periyodik olarak kullanabilirsiniz.
Linux'un ayrıca "soyut" Unix soketlerine - herhangi bir dosya sistemi nesnesi yerine bir bayt dizisine [1] bağlı olan ve herhangi bir dosya stili erişim hakkına tabi olmayan ve "kaldırılamayan" soketlere sahip olduğuna dikkat edin. veya farklı bir adrese taşındı.
[1] ona "string" diyebilir, ancak dosya sistemi yolundan farklı olarak NUL bayt içerebileceğine dikkat edin.