Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/07/2008, à 22:26

Damiens

./a.out: : No such file or directory

Mon probleme est que je compile, la compilation fonctionne.

Lorsque je fais un ls -al ./a.out j'ai ceci comme sortie :

sneimad@sneimad-desktop:~$ ls -al ./a.out
-rwxr-xr-x 1 sneimad sneimad 7671 2008-07-11 23:21 ./a.out

mais lorsque je veux l'executer, j'ai ce message d'erreur :

./a.out: : No such file or directory

Je n'y comprend rien !!! Je le vois ce foutu fichier ... hmm

Si quelqu'un peut m'aider, je le remercie d'avance !

Damiens.

Hors ligne

#2 Le 11/07/2008, à 22:36

xelator

Re : ./a.out: : No such file or directory

tu as appelé ton fichier ./a.out?
normalement on l'appelle a.out
puis on le rend exécutable :
chmod +x a.out
puis on l'exécute avec :
./a.out

Dernière modification par xelator (Le 11/07/2008, à 22:36)

Hors ligne

#3 Le 11/07/2008, à 22:37

Damiens

Re : ./a.out: : No such file or directory

Petit ajout, j'ai essaye avec sudo et ca ne marche pas non plus.

Par contre, supprimer le fichier par la ligne de commande a l'aide de rm fonctionne ... Parfois j'ai envie de me pendre !

Hors ligne

#4 Le 11/07/2008, à 22:40

Damiens

Re : ./a.out: : No such file or directory

Je n'avais pas vu la réponse ... Si tu regarde la sortie de la commande ls tu verras que ce foutu fichier EST executable. smile

Et sinon, j'ai juste compile avec la commande suivante :

gcc brol.c

Du coup, il est automatiquement nomme a.out.

J'ai aussi essaye en le nommant moi-meme mais j'ai le meme probleme peu importe le nom de fichier.

Hors ligne

#5 Le 11/07/2008, à 23:04

Damiens

Re : ./a.out: : No such file or directory

bon, j'ai essaye un bete printf et la, il me lance l'executable correctement ... sad

Voici mon code :

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define FALSE 0
#define TRUE !FALSE

#define PROC_EN_ATTENTE 0
#define PORT 5555
#define HOTE "127.0.0.1"

#define EXIT_OK 0

#define ERREUR_ECRITURE_SOCK -1
#define ERREUR_CONNECTION_SOCK -2
#define ERREUR_OUVERTURE_SOCK -3

int envoi_message(int protocole, int type, int message)
{
  int sock;
  struct sockaddr_in serv_addr;
  int retour;

  sock = socket(protocole, type, 0);

  if (sock < 0)
  {
    error("ERROR opening socket.\n");
    return(ERREUR_OUVERTURE_SOCK);
  }

  serv_addr.sin_family = AF_INET;
  serv_addr.sin_port = htons(PORT);
  serv_addr.sin_addr.s_addr = inet_addr(HOTE); 
 
  retour = connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));  
  if (retour < 0)
  {
    error("ERROR connecting socket.\n");
    return(ERREUR_CONNECTION_SOCK);
  }

  retour = write(sock, (int *)&message, sizeof(message));
  if (retour < 0)
  {
    error("ERROR writing socket.\n");
    return(ERREUR_ECRITURE_SOCK);
  }

  return EXIT_OK;
}

int main (void)
{
  int retour;
  do{
    retour = envoi_message(PF_INET, SOCK_DGRAM, PROC_EN_ATTENTE);
    if (retour < 0)
    {
      error("ERROR sending message.\n");
      return(retour);
    }
  }while(TRUE);

  return EXIT_OK;
}

Pourriez-vous le tester chez vous svp ??? Et si vous pouviez me dire ce qui ne va pas, ca serait sympa wink

Hors ligne

#6 Le 12/07/2008, à 00:47

nicolas66

Re : ./a.out: : No such file or directory

A mon avis, cela vient du fait que tu gères mal les erreurs dans ton code. Soit tu gères toi-même les messages et codes d'erreurs, soit tu laisses la bibliothèque GNU C s'en charger. L'inconvénient de la seconde méthode est de remettre à zéro la variable `errno' avant chaque appel système.

Méthode 1

FILE * fp = fopen("test.dat", "r");

if( !fp )
{
        printf("Un truc cloche\n");
        fclose(fp);
}
...
fclose(fp);

Sortie : Un truc cloche

Méthode 2

errno = 0; // on met à zéro la variable errno située dans errno.h
FILE * fp = fopen(filename, "r");

if( !fp )
{
        error(0, errno, "Unable to open `test.dat''");
        fclose(fp);
        return;
}
...
fclose(fp);

Sortie : ./a.out: Unable to open `test.dat': No such file or directory

Le premier argument de la fonction `error' indique si l'on souhaite quitter le programme si la valeur est différente de 0. Le second argument est le numéro d'erreur généré lors du dernier appel système (ici `fopen'). Enfin, le dernier argument indique un message à la manière de `printf'.

Davantage de précisions à cet endroit : http://www.gnu.org/software/libtool/man … sages.html

Dernière modification par nicolas66 (Le 12/07/2008, à 00:54)


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#7 Le 12/07/2008, à 02:26

Damiens

Re : ./a.out: : No such file or directory

Merci c'etait ca ! big_smile

J'ai maintenant un autre probleme ... L'ouverture de ma socket echoue mais je ne sais pas pourquoi.

Ma sortie est la suivante :

sneimad@sneimad-desktop:~$ ./a.out
ERROR opening socket.
ERROR sending message.

Le premier message d'erreur me dit que l'ouverture de ma socket a echoue.

Le deuxieme message d'erreur est normal. C'est parce que l'ouverture de ma socket se fait dans la fonction qui envoie les messages. smile

Donc voila ... Je ne suis pas tres a l'aise avec la programmation réseau donc si quelqu'un pouvait me dire ce que je dois faire pour éviter que la creation de socket echoue, ca m'arrangerait.

Voici mon nouveau code (j'ai juste changer les appels a error par des printf) :

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define FALSE 0
#define TRUE !FALSE

#define PROC_EN_ATTENTE 0
#define PORT 5555
#define HOTE "127.0.0.1"

#define EXIT_OK 0

#define ERREUR_ECRITURE_SOCK -1
#define ERREUR_CONNECTION_SOCK -2
#define ERREUR_OUVERTURE_SOCK -3

int envoi_message(int protocole, int type, int message)
{
  int sock;
  struct sockaddr_in serv_addr;
  int retour;

  sock = socket(protocole, type, 0); //c'est la que ca foire.

  if (sock < 0)                                    // le test est vrai.
  {
    printf("ERROR opening socket.\n");
    return(ERREUR_OUVERTURE_SOCK);
  }

  serv_addr.sin_family = AF_INET;
  serv_addr.sin_port = htons(PORT);
  serv_addr.sin_addr.s_addr = inet_addr(HOTE); 
 
  retour = connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));  
  if (retour < 0)
  {
    printf("ERROR connecting socket.\n");
    return(ERREUR_CONNECTION_SOCK);
  }

  retour = write(sock, (int *)&message, sizeof(message));
  if (retour < 0)
  {
    printf("ERROR writing socket.\n");
    return(ERREUR_ECRITURE_SOCK);
  }

  return EXIT_OK;
}

int main (void)
{
  int retour;
  do{
    retour = envoi_message(PF_INET, SOCK_DGRAM, PROC_EN_ATTENTE);
    if (retour < 0)
    {
      printf("ERROR sending message.\n");
      return(retour);
    }
  }while(TRUE);

  return EXIT_OK;
}

Hors ligne

#8 Le 12/07/2008, à 17:26

nicolas66

Re : ./a.out: : No such file or directory

1 - Explique brièvement ce que ton prog est censé faire
2 - Ton prog ne ferme jamais les sockets ouvertes. Ferme-les avec `close'. Tu aurai pu résoudre ce problème tout seul en utilisant les conseils de mon post précédent hmm


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#9 Le 12/07/2008, à 22:10

neurtixon

Re : ./a.out: : No such file or directory

tu fichier s'appelle a.out ou ./a.out (meme si je doute que cela sois possible se serais une erreur bete)


google chrome ... ouai et sinon on attend la version 1.0
au lieu de nous faire tester la version 0.2
parce que la beta 0.2 est pas tres aboutis quand meme

Hors ligne

#10 Le 12/07/2008, à 23:40

Damiens

Re : ./a.out: : No such file or directory

neurtixon :

Mon fichier s'appelle a.out. Maintenant je n'ai plus l'erreur. Le programme se lance correctement.

nicolas66 :

Mon programme est censé ouvrir une socket (il échoue a ce moment ...).
Ensuite il doit se connecter a un serveur dont l'adresse est 127.0.0.1 (loopback pour le test) et lui envoyer un message qui est un entier et dont la valeur est PROC_EN_ATTENTE (une macro qui "vaut" 0).

Desole pour le close ! C'est une erreur que je fais tout le temps ... Je fais la meme erreur avec mes free, je les oublie !!! hmm

Je l'ai corrige et cela fonctionne maintenant.

Merci beaucoup ! big_smile

Hors ligne

#11 Le 13/07/2008, à 10:03

Link31

Re : ./a.out: : No such file or directory

neurtixon a écrit :

tu fichier s'appelle a.out ou ./a.out (meme si je doute que cela sois possible se serais une erreur bete)

Au contraire. Ce serait un exploit.
Si tu arrives à créer un fichier nommé ./a.out, j'aimerais bien savoir comment tu t'y prends.

Hors ligne