16.05.2015 Views

Working with the Unix OS

Working with the Unix OS

Working with the Unix OS

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Process Scheduling<br />

System Calls for Time<br />

#include <br />

#include <br />

extern long times();<br />

main()<br />

{<br />

int i;<br />

/* tms is data structure containing <strong>the</strong> 4 time elements */<br />

struct tms pb1, pb2;<br />

long ptl, pt2;<br />

ptl = times(&pb1);<br />

for (i = 0; i < 10; i++)<br />

if (fork() == 0)<br />

child (i);<br />

for (i = 0; i < 10; i++)<br />

wait((int *) 0);<br />

pt2 = times(&pb2);<br />

printf("parent real %u user %u sys<br />

%u cuser %u csys %u\n",<br />

pt2 - ptl, pb2.tms_utime - pb1.tms_utime,<br />

pb2.tms_stime - pb1.tms_stime,<br />

pb2.tms_cutime - pb1.tms_cutime,<br />

pb2.tms_cstime - pb1.tms_cstime);<br />

}<br />

child(n)<br />

int n;<br />

{<br />

int i;<br />

struct tms cb1, cb2;<br />

long tl, t2;<br />

}<br />

tl = times(&cb1);<br />

for (i = 0; i < 10000; i++)<br />

;<br />

t2 = times(&cb2);<br />

printf("child %d: real %u user %u sys %u\n",<br />

n, t2 - tl, cb2.tms_utime - cb1.tms_utime,<br />

cb2.tms_stime - cb1.tms_stime);<br />

exit(0);<br />

Figure 51. Program Using Timer<br />

#include <br />

#include <br />

#include <br />

main(argc, argv)<br />

int argc;<br />

char *argv[ ];<br />

{<br />

extern unsigned alarm();<br />

extern wakeup();<br />

struct stat statbuf;<br />

time_t axtime;<br />

if (argc != 2)<br />

{<br />

printf("only 1 arg\n");<br />

exit(0);<br />

stime(p }<br />

axtime = (time_t) 0;<br />

value), for (;;) time(tloc), times (tbuffer), alarm<br />

{<br />

/* find out file access time */<br />

if (stat (argv[1], &statbuf) == -1)<br />

{<br />

printf("file %s not <strong>the</strong>re\n", argv[1]);<br />

exit(0);<br />

}<br />

if (axtime != statbuf.st_atime)<br />

{<br />

printf("file %s accessed\n", argv[1]);<br />

axtime = statbuf.st_atime;<br />

}<br />

signal(SIGALRM, wakeup); /* reset for alarm */<br />

alarm(60);<br />

pause(); /* sleep until signal */<br />

}<br />

}<br />

wakeup()<br />

{<br />

}<br />

Figure 52. Alarm Call<br />

174

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!