Showing posts with label labs. Show all posts
Showing posts with label labs. Show all posts

Saturday, August 9, 2014

These are a list of various unix system calls that are implemented in C. If you have any doubts, please let me know.

PROGRAM DEVELOPMENT

#include<stdio.h>
#include<dirent.h>
struct dirent *dptr;
void main(int argc, char *argv[])
{
  char buff[100];
  DIR *dirp;
  printf("\n\nEnter Directory Name: ");
  scanf("%s",buff);
  if((dirp=opendir(buff))==NULL)
  {
   printf("\n The given directory does not exist\n");
   exit(1);
  }
  while(dptr=readdir(dirp))
  {
    printf("%s\n",dptr->d_name);
  }
  closedir(dirp);
}
























PROGRAM DEVELOPMENT

#include<stdio.h>
#include<unistd.h>
main()
{
  int pid,pid1,pid2;
  pid=fork();
  if(pid==-1)
  {
    printf("ERROR IN PROCESS CREATION\n");
    exit(1);
  }
  if(pid!=0)
  {
   pid1=getpid();
   printf("\nThe parent process id is %d\n",pid1);
   }
  else
   {
    pid2=getpid();
   printf("\nThe child process id is %d\n",pid2);
  }

}













PROGRAM DEVELOPMENT

#include<stdio.h>
int main()
{
  int fd;
  if((fd=open("file.dat"))==-1)
  {
   perror("cannot open the file.dat");
   exit(0);
  }
  else
  printf("\nFILE OPENED SUCCESSFULLY");
  return 0;
}

















PROGRAM DEVELOPMENT

#include<stdio.h>
main()
{
 char b[20];
 int fd,xr;
 if((fd=open("balaji",0))==-1)
 {
  printf("Cannot open file\n");
  exit(1);
 }
 do
 {
   xr=read(fd,b,20);
   b[xr]='\0';
   printf("%s",b);
 }
while(xr==20);
 close(fd);
}















PROGRAM DEVELOPMENT

#include<stdio.h>
main(int ac,char *av[])
 {
  int fd;
  int i=1,j=0;
  char *sep="";
  printf("%s",av[1]);
  if(ac<1)
  {
   printf("\n INSUFFICIENT ARGUMENTS");
   exit(1);
  }
  if((fd=open("balaji",0660))==-1)
  {
   printf("\n cannot create the file");
   exit(1);
  }
  while(i<ac)
  {
 j=write(fd,av[i],(unsigned)strlen(av[i]));
  printf("%d",j);
   write(fd,sep,(unsigned)strlen(sep));
   i++;
   }
   close(fd);
}










PROGRAM DEVELOPMENT

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
int main()
{
 int s;
 struct stat st;
  s=stat("sss.c",&st);
  if(s<0)
  {
   printf("use of stat() is unsuccessful\n");
  exit(0); 
   }
   printf("\ninode number of sss.c file is %d",st.st_ino);
   printf("\nnumber of links to sss.c is %d",st.st_nlink);
   printf("\nfile permissions of sss.c file is %d",st.st_mode);
   printf("\nsize of sss.c file is %d",st.st_size);
   printf("\nlast access time of sss.c file is %d\n",st.st_atime);
}


Creating, writing to and reading from shared memory program

This is an operating systems program to implement creating, writing to and reading from a shared memory. If you have any doubts please let me know.

#include<sys/mman.h>                                                                                                                                                                                                                           
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
main()
{
    int fd;
    char mamname[20];
    printf(“\nEnter the shared memory name: “);
   scanf(“%s”,memname);
   fd=shm_open(memname,O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
   ftruncate(fd,100);
   if(fd>0)
   printf(“\nSUCCESS”);
   else
   printf(“\nFAIL”);
}



#include<sys/mman.h>                                                                                                                                                                                                                            
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
main()
{
    int fd,i;
    char mamname[20];
    unsigned char *ptr;
    printf(“\nEnter the shared memory name: “);
   scanf(“%s”,memname);
   fd=shm_open(memname,O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
   ptr=mmap(NULL,100,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
   for(i=0;*(ptr+i)!=’\0’;i++)
    printf(“%c”,*(ptr+i));
}



#include<sys/mman.h>                                                                                                                                                                                                                            
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
main()
{
    int fd,i;
    char mamname[20],s[100];
    unsigned char *ptr;
    printf(“\nEnter the shared memory name: “);
   scanf(“%s”,memname);
   fd=shm_open(memname,O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
   ptr=mmap(NULL,100,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
   if(fd>0)
   {
    printf(“\nEnter data:”);
   gets(s);
   for(i=0;s[i]!=’\0’;i++)
    *(ptr+i)=s[i];
}


Shell programs for prime and palindrome

Shell scripting programs to implement whether a number is prime as well as a program to check for a palindrome. If you have any doubts please let me know 

PRIME
#!/bin/bash
echo " enter a number"
read n
i=2
flag=0
while((i<=$n/2))
do
((c = n % i))
if ((c==0))
then
flag=1
fi
((i=i+1))
done
if ((flag==0))
then
echo "prime"
else
echo "composite"
fi



PALINDROME
echo “enter a string to be entered:”
read str
echo
len=`echo $str | wc –c`
len= ((len-1))
i=1
j= ((len/2))
while((i<j))
do
k=`echo $str | cut –c $i`
l=`echo $str | cut –c $len`
if((k!=l))
then
flag=1;
fi
((i=i+1))
((len=len-1))
Done
If((flag==0))
then
Echo “palindrome”
Else
Echo “ not palindrome”

fi    

Implementation of ls and grep

C programs for the implementation of ls and grep for the operating systems lab. If you have any doubts, please let me know.

ls
#include<stdio.h>
#include<dirent.h>
main(int argc, char ** argv)
{
    DIR *dp;
    struct dirent *link;
    dp=opendir(argv[1]);
    printf("\n the contents of directory %s are \n",argv[1]);
     while((link==readdir(dp))!=0)
     printf("%s",link->d_name);
      closedir(dp);
}

GREP
#include<stdio.h>
#include<string.h>
#define max 1024
void usage()
{
   printf("usage:\t./a.out filename word\n");
}
int main(int argc, char *argv[])
{
   FILE *fp;
   char fline[max];
   int count=0;
   int occurrences=0;
   if(argc!=3)
   {
     usage();
      exit(1);
   }
   if(!(fp=fopen(argv[1],"r")))
   {
      printf("grep : could not open file: %s\n",argv[1]);
       exit(1);
   }
   while(fgets(fline,max,fp)!=NULL)
    {
        count++;
         if(newline=strchr(fline,'\n'))
         *newline='\0';
         if(strchr(fline,argv[2]!=NULL)
          {
              printf("%s: %d %s\n",argv[1],count,fline);
              occurrences++;
          }
      }
}



Program for Best Fit, Worst Fit and First Fit

This is a program for the implementation of Best fit, Worst Fit, and First Fit for the operating systems lab. If you have any doubts please let me know.

#include<stdio.h>
#include<stdlib.h>
int i,j,n,x,ch,size,ch1,ch2,y,pid;
struct alloc1
{
  int id,sa,ea,size;
  struct alloc1 *next;
}*start=NULL,*ptr=NULL,*newn=NULL;

struct free1
{
  int stadd,eadd,size1;
  struct free1 *next;
}*start1=NULL,*newn1=NULL,*ptr2=NULL,*preptr2=NULL;

void displayfree(struct free1 *temp)
{
printf("\n\nFree Space\n");
temp=start1;
while(temp!=NULL)
    {
    printf("%d",temp->stadd);
    printf(" - %d\n",temp->eadd);
    temp=temp->next;
    }}

void display(struct alloc1 *temp1)
{
printf("\n\nAllocated\n");
temp1=start;
while(temp1!=NULL)
    {
                        printf("p%d\t",temp1->id);
    printf("%d",temp1->sa);
    printf(" - %d\n",temp1->ea);
    temp1=temp1->next;
    }
}
void init()
{
   newn->sa=ptr2->stadd;
   newn->ea=newn->sa+size-1;
   ptr2->stadd=ptr2->stadd+size;
   ptr2->size1=ptr2->size1-size;
}
void main()
{
    printf("\nEnter the number of processes:\n");
  scanf("%d",&n);
   for(i=0;i<n;i++)
  {
         newn=(struct alloc1 *) malloc(sizeof(struct alloc1));
         printf("\nEnter process id: ");
         scanf("%d",&newn->id);
         printf("\nEnter the start address: ");
         scanf("%d",&newn->sa);
         printf("\nEnter the end address: ");
         scanf("%d",&newn->ea);
         newn->size=(newn->ea-newn->sa)+1;
         if(start==NULL)
        {
            start=newn;
            start->next=NULL;
            ptr=start;
        }
       else
       {
            while(ptr->next!=NULL)
            {
            ptr=ptr->next;
            }
            ptr->next=newn;
            ptr=ptr->next;
            ptr->next=NULL;
       }
}
 printf("\nEnter the details of free space\n");
 do
 {
    newn1=(struct free1 *) malloc(sizeof(struct free1));
   printf("\nEnter the starting address: ");
   scanf("%d",&newn1->stadd);
   printf("\nEnter the ending address: ");
   scanf("%d",&newn1->eadd);
   newn1->size1=(newn1->eadd-newn1->stadd)+1;
    if(start1==NULL)
  {
    start1=newn1;
    start1->next=NULL;
  ptr2=start1;
   }
   else
   {
     while(ptr2->next!=NULL)
       ptr2=ptr2->next;
     ptr2->next=newn1;
     ptr2=ptr2->next;
     ptr2->next=NULL;
  }
  ptr2=start1;
  printf("\nPress 1 to add more...");
  scanf("%d",&ch);
 }while(ch==1);
printf("\n BEFORE FITTING\n");
displayfree(ptr2);
 ptr=start;
display(ptr);
do
{
  printf("\nEnter the size of new process: ");
  scanf("%d",&size);
  printf("\nEnter the process id:");
  scanf("%d",&pid);
 newn=((struct alloc1 *)malloc(sizeof(struct alloc1)));
   newn->next=NULL;  
   newn->size=size;
               newn->id=pid;
     printf("\nMENU:\n1.First fit\n2.Best fit\n3.Worst fit\n4.Exit\n");
     printf("\nEnter your choice:\n");
     scanf("%d",&ch1);
     switch(ch1)
     {
       case 1:
   ptr2=start1;
   if(ptr2->size1==size)
   {
   start1=ptr2->next;
   }
   else
   {
   while(ptr2->size1<size)
   {
    if(ptr2->next==NULL)
     {
        printf("\nInsufficient memory");
  goto lab;
      }
   preptr2=ptr2;
   ptr2=ptr2->next;
   if(ptr->size==size)
   {
   preptr2->next=ptr2->next;
   }}}
   init(); ptr=start;
while(ptr->next!=NULL)
   ptr=ptr->next;
      ptr->next=newn;
   printf("\nFIRST FIT\n");
   display(ptr);
   displayfree(ptr2);
          lab: break;
case 2:
   ptr2=start1;
   x=1000;
   while(ptr2!=NULL)
   {
   if((ptr2->size1>=size)&&(ptr2->size1<=x))
   {
   x=ptr2->size1;
   }
   ptr2=ptr2->next;
  }
  if(x==1000)
  {
   printf("\nInsufficient memory");
  break;
  }
   ptr2=start1;
   while(ptr2->size1!=x)
   {
   preptr2=ptr2;
   ptr2=ptr2->next;
   }
init();
if(x==size)
   preptr2->next=ptr2->next;
   ptr=start;
   while(ptr->next!=NULL)
   ptr=ptr->next;
   ptr->next=newn;
   printf("\nBEST FIT\n");
   display(ptr);
   displayfree(ptr2);
break;
case 3:   
   ptr2=start1;
       y=0;
   while(ptr2!=NULL)
   {
   if((ptr2->size1>=size)&&(ptr2->size1>=y))
   {
   y=ptr2->size1;
   }
   ptr2=ptr2->next;
  }
if(y==0)
   {
   printf("\nInsufficient memory");
  break;
   }
   ptr2=start1;
   while(ptr2->size1!=y)
   {
   preptr2=ptr2;
   ptr2=ptr2->next;
   }
   if(y==size)
   {
   preptr2->next=ptr2->next;
   }
   init(); ptr=start;
   while(ptr->next!=NULL)
   {
   ptr=ptr->next;
   }
   ptr->next=newn;
  printf("\nWORST FIT\n");
   display(ptr);
   displayfree(ptr2);
   break;
case 4:break;
default:break;
}
printf("\npress 1 to add more..");
scanf("%d",&ch2);
}while(ch2==1);
}