/*===============================================*\ Mercredi 9 Septembre 1998 Arash HABIBI BindUnix.c Un programme qui ouvre une socket unix de type SOCK_DGRAM et l'attache a la reference passee en premier argument. Le but est d'essayer la fonction bind et de voir ce qu'on peut faire comme erreur. Ensuite, le but est de faire un ls et de voir la socket qu'on a creee. Samedi 13 Juillet 2002 M.Lokbani validation gcc 2.95.3 - gestion des erreurs - corrections des warnings relatifs aux E/S du systèmes. - visible avec ls et netstat. - à vérifier si les étudiants peuvent attribuer le drapeau S (setuid)? - pour détruire la socket créer (visible avec ls), faire comme suit: ls socket porte "la marque =", on obtient par exemple: 90= pour détruire le "fichier" associé: (après le 90 faire TAB) \rm ./90 \*================================================*/ #include #include #include #include #include #include struct sockaddr_un adresse_loc; int main(int argc, char **argv) { int desc, res; char bidon; if(argc!=2) {printf("Usage : BindUnix socket_loc\n"); exit(1);} /*--------- creation de la socket -----------*/ desc = socket(AF_UNIX, SOCK_DGRAM, 0); if(desc == -1) {perror("socket"); exit(1);} else printf("Socket creee.\n"); /* -------- preparation de l'adresse ---------*/ adresse_loc.sun_family = AF_UNIX; strcpy(adresse_loc.sun_path, argv[1]); /* ------- attachement de la socket a l'adresse ----*/ res = bind(desc, (struct sockaddr*)&adresse_loc, sizeof(adresse_loc)); if(res == -1) {perror("bind"); exit(1);} else printf("Socket attachee.\n"); /* --------- Attente de RETURN pour sortir --------*/ printf("RETURN pour sortir.\n"); scanf("%c",&bidon); return 0; }