Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

Programmaatje in C

maximilaan
6 antwoorden
  • Hallo allemaal,
    Heb een programmaatje opgedoekt waarmee je X tijdens de start ervan een hogere prioriteit kunt geven. Voor zover ik de code kan lezen moet alles goed gaan, maar dat gaat het dus niet, X start niet op omdat ze bepaalde zaken niet meer kan vinden.

    Alhier het programmaatje:
    [code:1:bf65117c3a]
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/stat.h>
    #include <sys/types.h>

    const char *app = "/usr/X11R6/bin/XFree86"; // the actual binary
    const int root = 0; // root's uid
    const int n = -10; // desired nice priority valid range -20..20.

    int main(int argc, char **argv)
    {
    seteuid(root); // The X server must be started as root under any Linux
    nice(n); // Makes it nice
    execv(app, argv); // This is it!
    /* Should never see this unless *app points to invalid binary */
    fprintf(stderr, "Failed to execv %s with nice value of %d
    ", app, n);
    exit(1);
    }

    [/code:1:bf65117c3a]

    De compilatie/installatiemethode:

    [list:bf65117c3a]
    [*:bf65117c3a] opslaan als wrapper.c.
    [*:bf65117c3a] compileren met commando [b:bf65117c3a]# $ gcc wrapper.c -o XFree86.wrapper[/b:bf65117c3a]
    [*:bf65117c3a] kijken of /usr/X11R6/bin/X een symlink is die naar /usr/X11R6/bin/XFree86 verwijst.
    [*:bf65117c3a] Nu de volgende comando's uitvoeren:
    [code:1:bf65117c3a]
    # su
    # cp XFree86.wrapper /usr/X11R6/bin
    # cd /usr/X11R6/bin
    # mv X X-
    # chown root:root XFree86.wrapper
    # chmod u+s XFree86.wrapper
    # ln -s XFree86.wrapper X
    # exit
    [/code:1:bf65117c3a]
    [/list:u:bf65117c3a]

    Als ik dat gedaan heb en X wil starten, dan gebeurt er dit:
    [code:1:bf65117c3a]
    startx – :1
    /usr/X11R6/bin/xinit: line 19: /usr/X11R6/bin/xinit3x: Onbekend bestand of map
    /usr/X11R6/bin/xinit: line 19: exec: /usr/X11R6/bin/xinit3x: cannot execute: Onbekend bestand of map[/code:1:bf65117c3a]
    Tja, en waarom wilie opeens niet starten dan??

    Max
  • Heb je al gekeken of /usr/X11R6/bin/xinit3x bestaat?
  • ik heb xinit en xinit4

    Maar waarom zeurt hij daar eigenlijk om?

    Max
  • Grappig, ik koppel xinit3x aan xinit4, en het werkt :o

    Max
  • /usr/X11R6/bin/xinit: line 19: /usr/X11R6/bin/xinit3x: Onbekend bestand of map

    Omdat het op regel 19 van /usr/X11R6/bin/xinit aangeroepen wordt?
  • Dat zal wel, maar waarom wordt het normaliter niet aangeroepen tijdens de start van X?
    Voor zover ik de hier geposte broncode kan lezen roept XFree86.wrapper gewoon XFree86 aan, iets wat anders rechtstreeks door het commando startx wordt gedaan..

    Max

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.