Ciao a tutti, ho un problema piuttosto incomprensibile con il mio server-client. Non riesco a connetterli, ricevendo come errno dalla connect "ENOENT". Tuttavia esiste sia la socket sulla quale voglio connettermi, sia il path che utilizzo per accedervi!
Vi descrivo un po meglio il problema:
- Il cliente legge da file un path parziale;
- Concatena al path letto l'estensione .sck, aggiunge "in testa" la directory dove si trova il file ed esegue connect.

Client:
codice:
struct sockaddr_un sad; 
int sock, trial = 3; 
char biblioteca[150], sockpath[160]; 

fconfig = fopen("./file.config", "r"); 

while( !feof(fconfig) ){
        if( !fgets(biblioteca, partial_path, fconfig) )
	     continue; 
        biblioteca[strlen(biblioteca)-1] = '\0'; //sostituisco il \n copiato dalla fgets 
        sprintf(sockpath, "./tmp/%s.sck", biblioteca); //Si occuperò sprintf di sistemare il teminatore
        
        sad.sun_family = AF_UNIX; 
	strncpy(sad.sun_path, sockpath, strlen(sockpath)); 
        	sock = socket(AF_UNIX, SOCK_STREAM, 0);
		if(sock < 0) return -1; 
        
        while(trial != 0){
          	res = connect(sock, (struct sockaddr *) &sad, sizeof(sad)); 
		if (res == 0) return sock; 
		trial--; 
		sleep(k);   //k vale 1 
        }
}
file.config è così costituito:
server1
server2
server3

ed è creato tramite uno script che invoca le seguenti istruzioni:
codice:
cat > ./file.config <<EOF
server1
server2
server3
EOF
La stranezza è che l'unico server al quale non riesco a connettermi è il server3, indipendentemente dalla posizione che occupa nel file.config! Anche se avviato singolarmente, non riesco a connettermi, ricevendo sempre lo stesso valore di errno dalla connect! Come è possibile che 3 stringhe, trattate allo stesso identico modo, producano risultati totalmente differenti? Il codice del server è corretto, crea la socket (la posso vedere nella cartella ./tmp), ma nessuno ci si può connettere! Cosa c'è che non va? Suggerimenti?