PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : unix/linux + nice()


noid
2004-05-06, 15:56:02
irgendwie ist die fkt nice() gar nicht nice. ich hab hier ein programm sinus


#include <stdio.h>
#define BREITE 60
#define OFFSET 60;

void sternchen(int anzahl)
{
int i;
for (i=0; i<anzahl; i++)
{
printf("*");
}
printf("\n");
}

void busySleep(int laenge)
{
int i,x = 2;
for (i=0; i<laenge; i++)
{
x+=x;
x+=x;
x+=x;
x+=x;

}
}

int main(int argc, char** argv)
{
double cntr=0.0;
int x, nice_value = 0;

if (argc >= 2) nice_value = atoi(argv[1]);

printf("%d\n",nice_value);

for (;;)
{
x = sin(cntr)*BREITE + OFFSET;
cntr += 0.1;
busySleep(599999);
if (nice(nice_value) == -1) break;
sternchen(x);
}

return 0;
}


wenn ich das programm aus der bash mit "nice -n 2 sinus" starte, dann hat sinus auch einen nicewert von 2. warum aber nicht wenn ich "sinus 2" in der bash angebe?
die doku zu nice() bringt auch nicht viel, die <unistd.h> ebenfalls nicht. es geht hier nur ums nice, die ausgabe des sinus auf dem terminal geht ohne probleme.

noid
2004-05-06, 18:39:11
#include <stdio.h>
#define BREITE 60
#define OFFSET 60;

void sternchen(int anzahl)
{
int i;
for (i=0; i<anzahl; i++)
{
printf("*");
}
printf("\n");
}

void busySleep(int laenge)
{
int i,x = 2;
for (i=0; i<laenge; i++)
{
x+=x;
x+=x;
x+=x;
x+=x;

}
}

int main(int argc, char** argv)
{
double cntr=0.0;
int x, nice_value = 0;

if (argc >= 2) nice_value = atoi(argv[1]);
if (nice(nice_value) == -1) return 0;

for (;;)
{
x = sin(cntr)*BREITE + OFFSET;
cntr += 0.1;
busySleep(599999);
sternchen(x);
}

return 0;
}


so isses richtig....