killall
Kenny McDonald
c60244 at ccfiris.aedc
Wed Feb 13 04:03:11 AEST 1991
In reply to :
--------------------------------------------------------------------------------
Before I write my own script, has anyone already knocked together
a "killall" script which functions like the IRIX killall for use on
machines which have no such convenience?
________________________________________________________________________________
I have a short c-prog that will do it (you may have to modify it for other
machines):
#include <stdio.h>
main(argc, argv)
int argc;
char *argv[];
{
int i, pid, end=0;
char *itoa();
char s[50], bs[100], t1[20][25], *a;
FILE *fp;
if (argc < 2)
{
printf ("usage: %s jobname\n",argv[0]);
exit();
}
for (i=2; i<=argc; ++i)
{
tmpnam(t1[i]);
sprintf (s,"ps -fu %d | grep %s > %s\0",getuid(),argv[i-1],t1[i]);
system (s);
fp = fopen (t1[i],"r");
if ((fgets(s, 9, fp) == NULL))
{
printf ("%s no such job running\n",argv[i-1]);
end=1;
}
else
{
fscanf (fp,"%d",&pid);
fgets (s, 34, fp);
fscanf (fp,"%s",s); fgets (bs,256,fp);
if ((strcmp(s,argv[i-1])) == 0)
{
printf ("killing %d\n",pid);
kill (pid,9);
}
}
if (end == 0)
{
while ((fgets(s, 9, fp) != NULL))
{
fscanf (fp,"%d",&pid);
fgets (s, 34, fp);
fscanf (fp,"%s",s); fgets (bs,256,fp);
if ((strcmp(s,argv[i-1])) == 0)
{
printf ("killing %d\n",pid);
kill (pid,9);
}
}
}
fclose (fp);
end=0;
}
for (i=2; i<=argc; ++i)
remove(t1[i]);
}
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| Kenneth M. McDonald * OAO Corp * Arnold Engineering Development Center |
| MS 120 * Arnold AFS, TN 37389-9998 * (615) 454-3413 |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNET: OO AA OO
@aedc-vax.af.mil:c60244 at ccfiris.aedc O O A A O O
O O AAAA O O
LOCAL: O O A A O O
c60244 at ccfiris OO A A OO
________________
/
More information about the Comp.sys.sgi
mailing list