home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 11 Util
/
11-Util.zip
/
SETPRI.ZIP
/
SP.C
< prev
next >
Wrap
Text File
|
1992-06-29
|
2KB
|
90 lines
/* SetPriority (SP) */
#define INCL_DOSPROCESS
#define INCL_NOPM
#include <os2.h>
#include <dos.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define PATHLEN 120
static struct _pt
{
char ch;
USHORT usClass;
} pt[]=
{
{'i', PRTYC_IDLETIME},
{'n', PRTYC_NOCHANGE},
{'r', PRTYC_REGULAR},
{'f', PRTYC_FOREGROUNDSERVER},
{'t', PRTYC_TIMECRITICAL},
{0, 0}
};
char *prior[]={"no change in", "idle", "regular", "time critical", "foreground"};
int main(int argc, char *argv[])
{
char args[255];
PIDINFO pidUs;
USHORT usClass;
USHORT rc;
SHORT sDelta;
struct _pt *ppt;
char **p;
if (argc < 3)
{
printf("Usage:\n\n");
printf("SP <class>[delta] <program> [args...]\n\n");
printf("<class>: n=no change, i=idle, r=regular, f=foreground, t=time critical\n");
printf("[delta]: Any number from -31 to 31\n");
return 1;
}
DosGetPID(&pidUs);
usClass=PRTYC_NOCHANGE;
sDelta=0;
*argv[1]=(char)tolower(*argv[1]);
for (ppt=pt; ppt->ch; ppt++)
if (ppt->ch==*argv[1])
{
usClass=ppt->usClass;
break;
}
sDelta=atoi(argv[1] + !!islower(*argv[1]));
if ((rc=DosSetPrty(PRTYS_PROCESSTREE, usClass, sDelta, pidUs.pid)) != 0)
printf("DosSetPrty() rc=%u\n", rc);
*args='\0';
for (p=argv+2; *p; p++)
{
strcat(args, *p);
strcat(args, " ");
}
if (args[strlen(args)-1]==' ')
args[strlen(args)-1]='\0';
printf("SP: running %s, %s priority, delta %d\n",
argv[2], prior[usClass], sDelta);
rc=system(args);
if (rc != 0)
printf("SP: system() rc=%u\n", rc);
return rc;
}