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