Ga naar inhoud

Programmaatje in C


anoniem

Aanbevolen berichten

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\n", 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
Link naar reactie
Voor de aardigheid even het bestandje open getrokken: [code:1:7cc6469842] #!/bin/sh function readlink() { ls -l $1|awk '{print $NF}' } XLINK=/usr/X11R6/bin/X while test -L $XLINK; do XLINK=`readlink $XLINK` done case "$XLINK" in *XFree86) exec /usr/X11R6/bin/xinit4 $* ;; *) exec /usr/X11R6/bin/xinit3x $* ;; esac exit 0[/code:1:7cc6469842] Wordt al iets duidelijker :) Max
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...