/* Message Queue */

20/10/2010 22:45

// length of the string using Message queue
#include<stdio.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>

struct msgbuff
{
        long mtype;
        char mtext[15];
};
struct stat buf;
char *ptr;

main()
{
struct msgbuff slen,rlen;
int pid,mqid,tlen,qid;
char c, text[20];
qid=msgget((key_t)20,IPC_CREAT|0666);
if(qid==-1)
if(mqid==-1)
printf("error in queue creation");
pid=fork();
if(pid==0)
{
printf("\n Enter file name");
scanf("%s",text);
fflush(stdin);
slen.mtype=1;
printf("%s",text);
strcpy(slen.mtext,text);
msgsnd(qid,&slen,sizeof(struct msgbuff),IPC_NOWAIT);
}
else
{
msgrcv(qid,&rlen,sizeof(struct msgbuff),1,0);
tlen=strlen(rlen.mtext);
if(lstat(rlen.mtext,&buf)<0)
        {
        perror("stat error");
        }
if(S_ISREG(buf.st_mode))
ptr="REGULAR";
else if(S_ISDIR(buf.st_mode))
ptr="DIRECTORY";
else if(S_ISCHR(buf.st_mode))
ptr="CHARACTER";
else if(S_ISFIFO(buf.st_mode))
ptr="FIFO";
printf("%s",ptr);
}


}

Bookmark and Share

Done by Aarya