Seltsam.
Am Programm kann es nicht liegen. 
Und normalerweise macht gcc kompilliertes Programm selbst
ausführbar, da ist kein chmod 755 explizit nötig.

Ich vermute, dein gcc hat das Flag -c implizit
Versuche mal folgendes:

gcc -c -o beisp.o beisp.c
gcc -o beisp beisp.o

Valentin.

----- original Nachricht --------

Betreff: Re: AW: [PUG] Stammtisch: Strings in C verbinden
Gesendet: Fr 12 Aug 2005 14:56:40 CEST
Von: "Bernhard Guillon"<[EMAIL PROTECTED]>

> Danke,
> der Code lässt sich ohne Fehler compilieren. Ich habe es mit gcc -o 
> beisp beisp.c gemacht (cc ist bei mir ein Symlink auf gcc) weil die 
> Datei bei mir beisp.c heißt. Danach hatte die Datei beisp automatisch 
> die Rechte 755. Wenn ich nun ./beisp ausführe kommt:
> bash: ./beisp: cannot execute binary file
> Andere C Programme laufen in dem Verzeichniss mit den selben Rechten 
> einwandfrei. Liegt es an mir oder an dem Programm?
> MfG
> Bernhard
> 
> [EMAIL PROTECTED] schrieb:
> 
> >>rn fehlt ....
> >>    
> >>
> >
> >Oops, sieht ja wie code fuer Obfuscated C Contest :-( 
> >sorry!
> >
> >
> >also nochmal als Text:
> >
> >Kompillieren mit: cc -o strexmpl 
> >strexmpl.c >>>>>>>>>>>>>> strexmpl.c 
> >
> >#include <stdio.h>
> >#define CUSTOM_PATH "/init/"
> >#define BUFLEN  1024
> >
> >/*!
> >Original open Funktion. Hier als Dummy, nur fuer die Testausgaben
> >*/
> >int orig_open( const char* path, int flags ){
> >   printf("orig_open( path=%s, flags=%d)n",   path, flags );
> >}
> >
> >
> >/*!
> >Variante 1 mit Buffer fester Laenge. 
> >Einerseits wird evtl. unnoetig viel Speicher reserviert, andererseits
> >(aber weniger wahrscheinlich) kann der reservierte Speicher nicht
> ausreichen
> >*/
> >int open1( const char* path, int flags  ){
> >   char buff[BUFLEN] = CUSTOM_PATH;  // Buff enthaelt jetz "/init/   
> >   strcat (buff,path);             // Nun steht komplette Path in Buff.
> >   
> >   return orig_open( buff, flags );
> >}
> >
> >/*!
> >Variante 2 nur tatsaechlich benoetigte Speichermenge dynamisch allokieren
> >*/
> >int open2( const char* path, int flags  ){
> >   char * buff = 0;  // Zeiger Buff mit 0 (NULL) initialisiert
> >   
> >   // Speicher mit korrekter Laenge (+1 wg. String-abschliessender Null)
> allokieren
> >   // und den buff-Zeiger darauf zeigen lassen
> >   buff = (char *) malloc ( strlen( CUSTOM_PATH ) + strlen(path) +1 );
> >   
> >   strcpy(buff,CUSTOM_PATH);  // Buff enthaelt jetz "/init/  
> strcat(buff,path);         // Nun steht komplette Path in Buff.
> >   
> >   return orig_open( buff, flags );
> >}
> >
> >
> >int main( int ac, char **al ){
> >  printf("Tests fuer open1n");
> >  // Testaufrufe
> >  open1("etc/passwd", 0);
> >  open1("usr/bin", 0);
> >  open1("var/log/httpd.log", 0);
> >  
> >  printf("nnTests fuer open2n");
> >  // Testaufrufe
> >  open2("etc/passwd", 0);
> >  open2("usr/bin", 0);
> >  open2("var/log/httpd.log", 0);
> >  
> >return 0;
> >}
> ><<<<<<<<<<<<<<<<<< eof
> >
> >  
> >
> 
> -- 
> ----------------------------------------------------------------------------
> 
> PUG - Penguin User Group Wiesbaden - http://www.pug.org
> 

--- original Nachricht Ende ----

--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an