Gå til innhold

daysleper

Medlemmer
  • Innlegg

    296
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av daysleper

  1. Det kan jo også tenkes at man omformulerte eller "utvidet" spørsmålet litt:

     

    "Datamaskiner, ikke for alle?"

     

    Altså, jeg synes ikke Windows i mange tilfeller er å regne for å være et ordentlig operativsystem (datamaskin), det er fint til det det er laget for; Office og en del annen god programvare. Sånn jeg ser det så er det hvilket operativsystem man har som avgjør totalintrykket av åssen maskin det er snakk om; man har konsoller, Windows eller Linux.

     

    Man kan kjøre Linux på spillkonsoller, men da er det plutselig ikke et spillkonsoll; men en datamaskin. En programmerbar sak.

     

    * Konsoller er spillemaskiner

    * Windows er Office-maskiner(+annen programvare og spill)

    * Linux er, egentlig, i bunn og grunn, tidkrevende datamaskiner

     

    Man kan kjøre Office-programmer (OpenOffice) på Linux, og vi kan sammenligne en slik Linux-desktop maskin med en Office-maskin hvis den settes opp på forhånd eller installeres alá stilen restore-CD slik at folk kan "resette" maskinen når noe går galt, les: "Elkjøp-maskiner". (Dette høres forresten ut som en god forretningsidé, kanskje jeg skulle begynne å selge slike maskiner med restore-Linux+Gnome+OpenOffice+X-Chat+Xmms+osv.-CD'er? :p )

     

    Noen er rett og slett ikke egnet til å bruke datamaskiner, de kan bruke Office-maskiner eller spill-konsoller. Noen har ikke evnen til å en gang prøve å følge en skritt-for-skritt Readme, eller dokumentasjon for en install-prosedyre .. selv når man ber dem om det. -- Og dette skjer flere ganger; hver gang -- om igjen og om igjen. Samme om det er snakk om 1 - 2 - 3 og det neste gang igjen, men bittelitt annerledes, er snakk om A - B - C.

     

    Frustrerende? -- For hvem?

     

    Noen har rett og slett ingen interesse, insikt, holdning, utholdenhet eller lyst til å lære noe nytt innen dette emnet, eller kanskje også andre emner. For lære; det er noe man gjør alene til slutt egentlig, og det er en prosess som gjentar seg til evig tid for den som virkelig har interesse og det er tidkrevende.

     

    For resten; så blir det bare å draes smertefullt, skrikende og sytende av andre opp trappene til de havner på et nivå der de så vidt, endelig, greier å puste; men de kommer aldri videre selv.

     

    Hva skal disse med en datamaskin? Hvorfor ikke bruke en Office-maskin? Hva er de ute etter? Er Linux billigere? Eller enda værre "tøffere", mer "1337"? :sick:

     

    Det er greit -- nå begynner ting i visse deler av Linux-verdenen å bli enklere; slik at flere kan prøve seg. Men det blir likevell slik at disse jeg snakker om sansynligvis kommer seg til nivå "B" kanskje, og når de litt siden komme seg videre til "C" eller kanskje "D" eller "E" -- er det på'n igjen. --

     

    Men ikke klag til folk som hjelper dere gratis, hold dere til fakta; og ikke døm på forhånd når dere egentlig burde vite at dere ikke har nok innsikt til å kunne dømme (ennå?). Finn dere i at de ikke gidder å svare eller kanskje svarer litt surt. Det som kanskje da kunne vært sagt var; "Hvorfor svarer dere i det hele tatt hvis dere bare svarer surt?" -- men så er det vel bedre å få noen, kanskje sure innimellom, svar enn ingen svar?

     

    Dette gjelder ikke trådstarter eller noen andre her spesifikt bare så det er sagt. Egentlig babbler jeg vel ut av meg litt frustrasjon kanskje .. Forumet er gratis; så litt fresing og frustrasjon fra begge sider får folk tåle som "betaling", synes jeg da.

     

    (Nå er det ikke på Linux-forumene jeg henger mest riktignok, men disse erfaringene gjør seg gjeldende fra andre forum og IRC, etc. også).

     

    :xmas:

  2. Jeg var borti noe lignende for litt siden, og tro det eller ei:

     

    Jeg tok å fikklet med diskene, og det viste seg at det var dårlig kontakt i strømpluggen hos den ene disken. "Presset" forsiktig på den (pluggen) nedover, så stoppen disken litt -- spannt litt ned, spannt opp, og lite "tikk" .. kunne gjenta dette flere ganger.

     

    Byttet til en annen ledig ledning fra PSU-et, satt et rødt merke på den dårlige kontakten, og etter det har det vært bra.

  3. Hei..

    Hei ja .. :)

     

     

    Lurer på hva som skal til for å drive sine egne webhotell og databaser.

     

    Linux med Apache, PHP og MySQL installert er vanlig.

     

     

    Kan man drive det fra en normal pc f.eks...?

     

    Ja.

     

    Lurer videre på om noen vet om et sted man kan kjøpe "løse" mysql databaser, som ikke er localhost, men som kan kan komme inn på fra flere forskjellige servere. Trenger en 20-30 databaser som skal aksesseres fra like mange forskjellige domenenavn...

     

    Dette vet jeg ikke noe om (hvor man får tak i). Det finnes sikkert noen som er interessert i å selge deg bare MySQL-database-tilgang hvis det var det du mente?

     

    Det er uansett fullt teknisk mulig og skal ikke være noe problem. Hvis jeg har forstått deg riktig da. (Jeg kjører f.eks. MySQL på én maskin her hjemme, og får tilgang til databasen(e) der fra flere andre maskiner.)

  4. Som nevnt tidligere:

    http://doc.mandrakelinux.com/MandrakeLinux...management.html

     

    ...og for at den skal "søke" andre steder (på Internett f.eks.?) enn CD-Romen etter pakker (programmer) må du få med deg dette:

     

    http://doc.mandrakelinux.com/MandrakeLinux...nt-sources.html

     

    Programmet (RpmDrake) som snakkes om her kan sammenlignes med "Legg til/Fjern programmer" eller "Add/Remove software" under "Kontrollpanel" i Windows -- bare at man her, i (Mandrake)Linux, også kan installere programvare direkte fra Internett fremfor bare det å kunne installere fra disk/cdrom.

     

    1. Les sakte, vær 100% sikker på at du har forstått så mye som mulig selv.

    2. Post det du prøver å gjøre, det du har forstått, det du ikke har forstått og feilmeldingen eller problemet. Her er det bedre med for mye enn for lite, bruk god tid - og tenk igjennom ting på forhånd!

     

    Som noen nevner ovenfor, er det veldig viktig med holdning, interesse og tolmodighet hvis man skal greie å lære seg noe nytt som er mer "avansert" enn "vanlige" ting. (Kom ikke på noe eksempel her ..) Nå er forresten ikke dette spesiellt avansert egentlig -- dette er noe Linux-brukere gjerne gjør flere ganger daglig; og er gjerne gjordt på 0,nix .. (helt sannt! :) )

     

    Det er forresten helt klart bedre å bruke pakkesystemet (i ditt tilfelle ser det ut til at dette er RpmDrake) som følger med en Linux-distro fremfor ./configure && make && make install!

     

    Riktignok er det noen av dere mer "avanserte" brukere som kanskje foretrekker å gjøre ting selv (gå på "dependency"-jakt når configure/make/gcc klager), men dette er selvfølgelig ikke noe man drar en nybegynner med Windows-bakgrunn "inn i"!

  5. assembler er det samme som assembly ja? Er ikke assembly mere avansert og komplisert en C++?

     

    Assembly (som språk) er drit-enkelt .. det ligger "nær maskinvaren" (lavnivå), og den kan bare utføre enkle operasjoner som f.eks. å legge sammen, trekke fra og lagre et tall.

     

    C++ er et språk som er mer høynivå og er derfor mer komplisert å lære enn assembly.

     

    Vi kan si at assembly er lett å lære og forstå, men vanskelig/komplisert å lage noe fornuftig i. Mens C++ er vanskelig/kompilsert å forstå, men er lett å lage noe fornuftig i. Med fornuftig mener jeg noe som er litt "stort"; eller større enn 50-100 linjer kode sånn ca.

     

    Det andre du spør om kan jeg desverre ikke svare så godt på, men jeg vet PLS-styring blir mye brukt til motorer i industri og sånnt. Språket for/i disse PLS-boksene kan minne om assembly, og er enkelt å lære seg og også å bruke i dette tillfellet; siden det å styre motorer ofte er lite komplisert i de sammenhengene man velger å bruke en PLS-enhet.

     

    Har du litt bakgrunn og erfaring fra programmering tar det deg ca. 15-20 minutter å lære deg et av disse PLS-språkene.

     

    Mobiltelefoner kan programmeres v.h.a. flere forskjellige språk: http://www.symbian.com/developer/index.html

     

    Hva som er mest vanlig vet jeg ikke -- men det er nok Java og C++.

  6. C++ som språk er å regne som et subset av språket C. Det vil si at C++ har alt det C har, og mere til.

     

    Man kan med andre ord sende C-kode til en C++ -kompiler og det vil i de "fleste" tilfeller fungere greit. Grunnen til at det ikke altid fungerer greit, er fordi C++ har et sterkere type-system enn C, noe som er en god ting!

     

    Jeg anbefaler deg å lære C++ fremfor C!

     

    Vi kan si C++ er "nyere og bedre", ja.

     

    Til dere som ikke er helt nybegynnere og leser dette vil jeg si at det er riktig at C99 har visse features som C++ ikke har; men disse featurene er ofte/altid unødvendige/overflødige i C++.

  7. Videre, relatert til dette med C.A.:

     

    Ett annet, kanskje ennå snedigere fenomen oppstår hvis vi starter med tallet 1 og for hvert skritt multipliserer tallet med 3:

     

    n->3n

     

    1 * 3 = 3

    3 * 3 = 9

    9 * 3 = 27

    27 * 3 = 81

    81 * 3 = 243

    243 * 3 = 729

    ...osv...

     

    Hvis vi viser svarene vi får nedover i binærform i stedet for vanlig desimalform som ovenfor får vi også (hvis vi holder på en stund) et tilsynelatende tilfeldig system!

     

    CA_num.png

     

    ..ble ikke så bra dette bildet som de i linkene ovenfor, men hvis man holder på lenge nok blir det et tilsynelatende tilfeldig system eller mønster av det. :wow:

  8. jtillnes:

    Tok å testet under Windows med MinGW-compileren, og da fikk jeg samme resultat som deg; ikke-tilfeldige tall. :dontgetit:

     

    Skulle tro dette var noe som fungerte uavhengig av plattform sånn egentlig.

     

    Spørs om det blir til at du må bruke ekstere biblioteker da ja; det finnes mange på Internett og på http://www.sourceforge.net, blandt annet Blitz++ (hjemmeside).

     

    ..eller du kan jo altids skifte til Linux.. :D

     

     

    Edit:

    Fannt ut noe! Det er bare det første tallet som ikke blir tilfeldig.

     

    Test dette, og følg med på tallene etter det første ved hver kjøring:

    #include <cstdlib>
    #include <ctime>
    #include <iostream>
    
    using namespace std;
    
    
    int main()
    {
       srand(time(0));
    
       for (int i = 0; i < 5; i++)
           cout << rand() << endl;
    
       return 0;
    }
    

     

    Dette kan du løse ved å lage en klasse der du genererer det første (ikke tilfeldige tallet) i constructoren! :)

     

    Altså random.hh fra posten ovenfor blir da slik:

     

    #ifndef _OXYMORA_RANDOM_HH_
    #define _OXYMORA_RANDOM_HH_
    
    #include <cstdlib> // eventuellt stdlib.h, for rand()
    #include <time.h>
    
    namespace Oxymora {
    
    template<typename T>
    class Random
    {
    public:
    Random(T min_, T max_)
     :_min(min_),
      _max(max_)
    {
     srand(time(0));
      rand(); // ** Her altså **
     _delta = RAND_MAX / (_max - _min);
    }
    
    T operator()(T min_, T max_)
    {
     _min = min_;
     _max = max_;
     _delta = RAND_MAX / (_max - _min);
     return(operator()());
    }
    
    T operator()()
    {
     return((rand() / _delta) + _min);  
    }
    
    private:
    T _min, _max;
    T _delta;
    }; // class Random
    
    } // namespace Oxymora
    
    #endif //#define _OXYMORA_RANDOM_HH_
    

     

     

    Edit2:

    Det er mulig det kan være lurt å kjøre rand() et par ganger, altså mer enn én gang i constructoren, for å øke "tilfeldigheten".

     

    Edit3:

    Tok å "ryddet opp i" koden og endret litt (rettet noen feil, og MSB er nå til venstre) på cellular.cpp for dere som er interesserte. :)

  9. Vi kan jo tenke oss at "fri" er et høynivåkonsept som har liten eller ingen betydning på det elementære nivå.

     

    ..men så er jo alt som er "høynivå" i bunn og grunn egentlig basert eller representert av noe som er "lavnivå" eller elementært, tror jeg.

     

    På samme måten som i forskjellige programmerings-språk; alt blir til slutt i bunn og grunn representert med 0 og 1.

     

    Man kan (kanskje, mulig jeg roter her) sammenligne den enkle regelen med "lavnivå", og det kompliserte resultatet eller mønsteret med "høynivå".

     

     

    Edit:

    I CA'en som brukes her er også ting representert som 0 og 1; men man kan tenke seg at man har flere muligheter (0 til 9 f.eks.) og disse blir representert v.h.a. farger. Men ting er fortsatt "digitalt" eller diskret!

  10. Kanskje jeg skulle skrevet en litt "off-beat" guide/artikkel på sourcecode.no om dette?

     

    Synes slikt er utrolig interessant ja!

     

    Edit: har forresten lagt til et par setninger til i posten ovenfor nuh.. :)

     

    Edit2:

    Jeg har bestemt meg for å ta en pause med artikkel-skrivingen siden jeg har litt annet jeg må få unna først. Blandt annet en bok jeg -må- få lest ferdig, noe kode jeg må få pusset på, og så er det jul+nyttårsfeiringer straks også. Hadde uansett blitt en interessant artikkel tror jeg - så skal se om jeg får rota sammen noe tekst og noen stilige bilder+ muligens en OpenGL-versjon av koden litt siden! :)

  11. Er endel SQL-spørsmål under forumet "Generellt/..." ja.

     

    Bare forslag det her altså ...

     

    Edit:

    Nå har det seg slik at, hvis jeg har fortstått ting riktig, at vi skal få opp en ny "del" i hardware-nettverket kallt gfx.no. Da blir det kanskje mer logisk å ha en egen kategori "Design/Webdesign/Gfx" der vi har dette med Webdesign/Design-forum, fremfor å ha dette under "Programmering" som nå.

     

    Webdesign, og markup-språk, som HTML og relaterte språk er, er jo egentlig ikke å regne som programmering(sspråk), tror jeg.

     

    Javascript, ECMAscript og ActionScript er spesialiserte programmeringsspråk for utelukkende dette med webdesign, så disse hører derimot under Webdesign/Design, tror jeg.

     

    PHP og ASP kunne vi kanskje hatt under begge kategorier? -- Hvis det går å linke fra f.eks. Programmering->PHP til Webdesign->PHP f.eks. -- Hvis ikke er vel kanskje disse mer å regne som programmering enn design(gfx).

     

    Ser ut til at dette med webdesign diskuteres her: http://forum.sourcecode.no/index.php?showt...dpost&p=1473729

     

     

    Programmering (sourcecode.no)

    - Språk

    -- C/C++

    -- Delphi/Pascal/Kylix

    -- Java

    -- PHP

    -- Visual Basic

    -- Perl

    -- Python

    -- C#

    -- osv

    - Emne (mer eller mindre uavhengig av språk altså)

    -- Algoritmer/Datastrukturer/Matte (LaTeX hadde vært fint her :dribble:)

    -- Multimedia

    -- Nettverk/Sockets

    -- OpenGL

    -- DirectX

    -- Win32

    -- Linux

    -- Databaser (og/eller SQL?)

    -- Gnome/GTK+/gtkmm (?)

    -- KDE/QT/TrollTech (?)

    -- Andre GUI og vanlige programvarebiblioteker (?)

    - Prosjekter (Prosjekt-"hjemmesider" ..CMS-aktig? "Bugs"-tråd, "Nyheter"-tråd, "Deltakere"-tråd, "Spørsmål fra brukere"-tråd?)

    -- Prosjekt 1

    -- Prosjekt 2

    -- osv

    - Jobber/Oppdrag (?)

    -- Applikasjoner (Uavhengig av språk?)

    -- Scripting (?)

    -- Dokumentasjon/Oversettelse (?)

    - Diverse/Annet

    -- Generell/Annen programmering

    -- Tilbakemeldinger/Forslag (?)

    -- Diskuter artikkler (Sourcecode.no)

     

     

    LaTeX mod: http://mods.ibplanet.com/db/?mod=932

  12. Tilfeldige tall *er* interssant ja. :)

     

    Er naturen, alt i hele universet; datamaskinen også, egentlig noen gang tilfeldig eller er det bare vi eller en maskin vi har laget, som ikke "ser" det på riktig måte eller oppdager systemet i det vi ser? Er universet diskret/digitalt og kan derfor da representeres ved hjelp av regler eller programmer? Eller er det analog og "ujevnt"?

     

    Jeg tror ingenting er tilfeldig, altså sånn egentlig når vi ser nærme nok på det, og at alt derfor kan representeres digitalt.

     

    Tenk på dette med cellular automata. Enkle regler som en ikke skulle tro genererte tilfeldigheter eller noe som helst, spruter ut intrikate, rekursive mønstre og andre ganger tilsynelatende tilfeldig støy.

     

    Ta en titt på bildene, 30_* og 90_* (klikk på linkene i Rev. kollonnen):

    http://scm.nostdal.net/cgi-bin/viewcvs.cgi/tests/tests/

     

    Her er noen direkte linker til noen av bildene:

    http://scm.nostdal.net/cgi-bin/viewcvs.cgi....viewcvs-markup

    http://scm.nostdal.net/cgi-bin/viewcvs.cgi....viewcvs-markup

     

     

    Koden ligger i cellular.cpp og programmet brukes slik:

    ./cellular 01011010

     

    Der 01011010 er CA-regelen du vil den skal generere. Som du sikkert gjetter er regelen representert ved hjelp av 8 binære bits. Det finnes med andre ord 256 forskjellige regler her.

     

    Juster konstantene PAUSE og WIDTH i koden!

     

    Den fungerer slik at den for hver linje går fra kolonne til kolonne og tegner et tegn (#) eller space avhengig om om punktene ovenfor er tomme eller fyllt inn med tegn. Hvis vi tenker oss regel 90, så kan den representeres slik:

     

    000

      0

     

    001

      1

     

    010

      0

     

    011

      1

     

    100

      1

     

    101

      0

     

    110

      1

     

    111

      0

     

    Når programmet kjøres byttes 0 ut med space, og 1 med tegnet #.

     

    Den sjekker altså de tre punktene i kolonnene til linjen ovenfor og fyller inn 1 eller 0 i den aktuelle kollonen under ettersom hvordan regelen ovenfor matcher. Det er disse utrolig enkle reglene som danner det "avanserte" mønstret til regel 90!

     

    Hvis du "snur" litt på regelen jeg siterer ovenfor ser du at den matcher det du sender som parameter når du kjører programmet; 01011010.

     

    Noen interssange regler er:

    - Regel 30: 00011110

    - Regel 90: 01011010

    - Regel 110: 01101110

     

    Det er flere som mener at de noen ganger (tilsynelatende?) tilfeldige og andre ganger rekursive mønstrene vi ser i naturen er et resultat av lignende enkle regler. Programmet her genererer mønstre i 1 dimensjon, men man kan også bruke tilsvarende enkle regler for å generere mønstre i 2, 3 eller flere dimensjoner. Man kan tenkes at det hele "eksploderer" i et big bang og rare, men systematiske ting skjer. Man kan også tenke seg at dette representerer det som skjer "etter" big bang; at materie (atomer) "klumper" eller sammler seg, og legger seg i bestemte systematiske mønstre (snøkrystaller, is, planeter?).

     

    Tenk hvis du bare så det som skjedde i kolonnen på f.eks. midten av bildet? Ville ikke det du så virket tilfeldig da? På samme måten som om man bare kunne se 4-ruter av et sjakk-brett om gangen. Universet er kanskje et sjakk-spill, og vi ser, foreløpig, bare 4-ruter av gangen; så visse ting virker tilfeldig.

     

    Vi kan tenke oss vi bare ser en liten del av noe stort; vi tar en avis og river et hull i midten og plasserer avisen med hullet forran TV'n og det vi ser virker tilsynelatende totalt tilfeldig og uten noen form for system. Hadde vi sett hele bildet, altså hele sammspillet i universet; hadde ikke tilfeldigheter eksistert tror jeg.

     

    Stephen Wolfram brukte CA i de tidlige versjonene av Mathematica for å generere tilfeldige tall. Igjen, snedig at det går; tilfeldigheter oppstår av enkle faste regler.

     

    Det ideelle hadde forresten vært om konsollet hadde "evig" bredde. Dette at konsollet ikke har "evig" bredde skaper i visse tilfeller, eller for visse regler, problemer og "ødlegger" dem litt. Kunne laget en OpenGL-versjon i stedet med "zoom-funksjon" kanskje.

     

    Finner masse info om cellular automata v.h.a. google, noe annet en kan søke på er "computable universes".

    Ta også en titt her: http://en2.wikipedia.org/wiki/A_New_Kind_of_Science_(book)

  13. Angående dette med bakgrunnstråder og polling av deskriptorer så hadde jeg muligens et lignende problem (blokking) som jeg løste ved å bruke asynkrone sockets og signals fremfor de kanskje mer vanlige select og poll (og/eller bakgrunnstråd(er)) -baserte løsningene:

     

    Fra tcpscheme.cpp :

    /// Set the socket to non-blocking and asyncronous
    if(fcntl(_sd, F_SETFL, O_NONBLOCK | O_ASYNC) == -1) {
     perror("TCPScheme::open(): " + __LINE__);
     return;
    }
    
    /// Set the signals from this filedescriptor/socket to be sent to this process
    if(fcntl(_sd, F_SETOWN, getpid()) == -1) { 
     perror("TCPScheme::open(): " + __LINE__);
     return;
    }    	
    
    /// Set the action to perform on SIGIO
    //sa_io = new struct sigaction;
    struct sigaction sa_io;
    sa_io.sa_sigaction = &sigioRoute;
    // sa_io.sa_mask = mask of (other) signals to block during handling;
    sa_io.sa_flags = SA_SIGINFO;
    if(sigaction(SIGIO, &sa_io, 0) == -1) {
     perror("TCPScheme::open(): " + __LINE__);
     return;
    }    
    
    
    // Handle SIGPIPE
    sa_io.sa_sigaction = &sigioRoute;
    // sa_io.sa_mask = mask of (other) signals to block during handling;
    sa_io.sa_flags = SA_SIGINFO;
    if(sigaction(SIGPIPE, &sa_io, 0) == -1) {
     perror("TCPScheme::open(): " + __LINE__);
     return;
    }	
    
    // Connect
    if(((connect(_sd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr))) == -1) // Did it return an error?
     	&& (errno != EINPROGRESS)) { // and was the error something else than EINPGROGRESS?
     perror((toString("TCPScheme::open(): ") + toString(__LINE__)).c_str());
     return;
    }
    

     

    sigioRoute ser slik ut:

     

    Fra sigiohandler.cpp :

    void sigioRoute(int signal, siginfo_t *siginfo, void *unknown)
     	// {{{ 
     {
     	switch(siginfo->si_code) {
     	case POLL_IN:
       //std::cerr << "sigioRoute::POLL_IN" << std::endl;
       ::_socket_delegation[siginfo->si_fd]->poll_in();
       break;
     	case POLL_OUT:
       //std::cerr << "sigioRoute::POLL_OUT" << std::endl;
       ::_socket_delegation[siginfo->si_fd]->poll_out();
       break;
     	case POLL_PRI:
       std::cerr << "sigioRoute::POLL_PRI" << std::endl;
       ::_socket_delegation[siginfo->si_fd]->poll_pri();
       break;
     	case POLL_ERR:
       std::cerr << "sigioRoute::POLL_ERR" << std::endl;
       ::_socket_delegation[siginfo->si_fd]->poll_err();
       break;
     	case POLL_MSG:
       std::cerr << "sigioRoute::POLL_MSG" << std::endl;
       ::_socket_delegation[siginfo->si_fd]->poll_msg();
       break;
     	case POLL_HUP:
       std::cerr << "sigioRoute::POLL_HUP" << std::endl;
       ::_socket_delegation[siginfo->si_fd]->poll_hup();
       break;
     	} // switch	
     } // sigioRoute()
     // }}}
    

     

     

    Koden er som du sikkert skjønner muligens tatt fra en litt annen sammenheng og er skrevet i C++ fremfor C, men det skulle ikke ha noen betydning siden, som du ser; jeg bruker standard Linux-funksjoner.

     

    Den ligger her:

    http://scm.nostdal.net/cgi-bin/viewcvs.cgi...ra/oxymora/com/

     

    Vet ikke om dette passer for ditt bruk eller om koden er noe god i det hele tatt, men dette fungerer fint for mitt bruk.

  14. En ennå enklere løsning:

     

    #include <stdio.h>
    #include <signal.h>
    #include <stdlib.h>
    
    static volatile int yup = 0;
    
    
    static void handler(int signo) 
    { 
    yup = 1; 
    }
    
    
    int main(int argc, char *argv[])
    {
    signal(SIGTRAP, handler);
    raise(SIGTRAP);
    
    if (yup == 0) {
     printf("Yup -- her har vi en debugger.\n");
     return(1);
    }
    
    printf("Hello\n");
    
    return(0);
    }
    

     

     

    lars@blackbox tests $ ./test3

    Hello

    lars@blackbox tests $ gdb test3

    GNU gdb 6.0

    Copyright 2003 Free Software Foundation, Inc.

    GDB is free software, covered by the GNU General Public License, and you are

    welcome to change it and/or distribute copies of it under certain conditions.

    Type "show copying" to see the conditions.

    There is absolutely no warranty for GDB.  Type "show warranty" for details.

    This GDB was configured as "i686-pc-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

     

    (gdb) run

    Starting program: /mnt/home/lars/tests/test3

     

    Program received signal SIGTRAP, Trace/breakpoint trap.

    0x401337f1 in kill () from /lib/libc.so.6

    (gdb) c

    Continuing.

    Yup -- her har vi en debugger.

     

    Program exited with code 01.

    (gdb)

     

     

    Duger denne da?

×
×
  • Opprett ny...