Portál AbcLinuxu, 5. listopadu 2025 17:28
Potřeboval bych něco na způsob rozdělení procesu (fork) přičemž část by byla vlastní spuštěná hra a část by se spožděním zavolala nastavení priority. Jde to napsat v shellovém skriptu?
Nebo máte někdo lepší nápad?
Napsat wrapper okolo wineserveru?
Trochu se mi pletou příkazy na změnu priority procesu.
Jaký je stručně rozdíl mezi nice, renice a snice?
#!/bin/sh
GAME_BINARY="fallout2.exe"
SUBDIR="."
WINE_NAMES="cedega winex3 wine winex cvswinex"
#----------------------------------------
script=$0
count=0
while [ -L "$script" ]
do
script=`perl -e "print readlink(\"$script\"), \"\n\""`
count=`expr $count + 1`
if [ $count -gt 100 ]
then
echo "Too many symbolic links"
exit 1
fi
done
GAME_DIR=`dirname $script`
if [ -z "$WINE_EXEC" ]
then
WINE_EXEC=`type -p $WINE_NAMES | head -1 `
fi
if [ -e "$WINE_EXEC" ]
then
cd $GAME_DIR
cd $SUBDIR
$WINE_EXEC $GAME_BINARY $* &
sleep 2 &&
renice 1 -p `pgrep wineserver`
else
echo "Wine(X) not in your PATH"
exit 1
fi
Muzete si ho prizpusobit k vlastnim potrebam
. Doufam, ze jsem vas spravne pochopil :-/
int
main(int argc, char *argv[])
{
nice(19);
execv("/.../wineserver", argv);
}
Dodatečné hledání a renicování procesu je IMHO metoda náchylná k chybám.
#!/bin/sh sudo /usr/bin/set_cedega cedega $* & sleep 2 && renice 19 -p `pgrep wineserver`.. a funguje to. Nicméně wrapper okolo wineserveru by možná byl lepší, a a kdyby Wine/Cedega zavedla jako volitelné nastavení prioritu procesů, bylo by to ještě lepší..
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.