You are on page 1of 4

4a)

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
void forkexample()
{
pid_t p;
p = fork();
if(p<0)
{
perror("fork fail");
exit(1);
}
//child process because return value zero
else if(p==0){
printf("Hello from Child!\n");
}
//parent process because return value non-zero.
else{
printf("Hello from Parent\n");
}
}
int main(){
forkexample();
return 0;
}

4b)

#include<stdio.h>

#include<stdlib.h>

#include<unistd.h>

int main()

{
char *args[]={"./EXEC",NULL};
execv(args[0],args);

printf("Ending....");

return 0;
}

5a)

#include<stdio.h>
#include<unistd.h>
int main(){
int pipefds[2];
int returnstatus;
int pid;
char writemessages[2][20]={"KCE", "Karpagam"};
char readmessage[20];
returnstatus = pipe(pipefds);
if(returnstatus == -1){
printf("Unable to create pipe\n");
return 1;
}
pid = fork();
// Child process
if (pid == 0) {
read(pipefds[0], readmessage, sizeof(readmessage));
printf("Child Process - Reading from pipe Message 1 is %s\n", readmessage);
read(pipefds[0], readmessage, sizeof(readmessage));
printf("Child Process - Reading from pipe Message 2 is %s\n", readmessage);
}
else { //Parent process
printf("Parent Process - Writing to pipe Message 1 is %s\n", writemessages[0]);
write(pipefds[1], writemessages[0], sizeof(writemessages[0]));
printf("Parent Process - Writing to pipe Message 2 is %s\n", writemessages[1]);
write(pipefds[1], writemessages[1], sizeof(writemessages[1]));
}
return 0;
}
6a)
#include <stdio.h>
#include <sys/msg.h>

#define MAX 10
//structure for message qurue
struct mesg_buffer{
long mesg_type;
char mesg_text[100];
}message;
int main()
{
key_t key;
int msgid;
//flok to generate unique key
key=ftok("progfile", 65);
//msgget creates a message queue
//and returns identifier
msgid=msgget(key, 0666 | IPC_CREAT);
message.mesg_type = 1;
printf("Write Data: ");
fgets(message.mesg_text,MAX,stdin);
//magand to send message
msgsnd(msgid, &message, sizeof(message), 0);
//display the message
printf("Data send is: %s\n", message.mesg_text);
return 0;
}

#include <stdio.h>
#include <sys/msg.h>

#define MAX 10
//structure for message qurue
struct mesg_buffer{
long mesg_type;
char mesg_text[100];
}message;
int main()
{
key_t key;
int msgid;
//flok to generate unique key
key=ftok("progfile", 65);
//msgget creates a message queue
//and returns identifier
msgid=msgget(key, 0666 | IPC_CREAT);
message.mesg_type = 1;
printf("Write Data: ");
fgets(message.mesg_text,MAX,stdin);
//magand to send message
msgsnd(msgid, &message, sizeof(message), 0);
//display the message
printf("Data send is: %s\n", message.mesg_text);
return 0;
}

You might also like