Lab 5 Os
Lab 5 Os
K KRISHNANUNNI
CSE-C
AM.EN.U4CSE22231
1)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
pid_t process_id;
pid_t parent_id;
char name;
int n;
} ptree;
{ if (process == NULL)
return;
else {
+) dfs(process->children[i]);
}
}
ptree* p = (ptree*)malloc(sizeof(ptree));
if (p == NULL) {
printf("DMA failed");
return NULL;
} else {
p->process_id = process_id;
p->name = name;
p->n = n;
p->children[i] = NULL;
return p;
if (root == NULL)
return;
destroy_tree(root->children[i]);
free(root->children);
free(root);
}
int main(void) {
ptree *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9;
pid_t P1, P2, P3, P4, P5, P6, P7, P8, P9;
if(P1==0)
P1 = getpid();
if(P2==0)
P2 = getpid();
if(P3==0)
P3 = getpid();
if(P4==0)
P4 = getpid();
if(P5==0)
P5 = getpid();
if(P6==0)
P6 = getpid();
if(P7==0)
P7 = getpid();
if(P8==0)
P8 = getpid();
if(P9==0)
P9 = getpid();
p1->children[2] = p4;
p3->children[0] = p5;
p3->children[1] = p6;
p4->children[0] = p7;
p7->children[0] = p8;
p7->children[1] =
p9;
p2->parent_id = p1-
>process_id; p3->parent_id=
p1->process_id; p4->parent_id=
p1->process_id; p5->parent_id=
p3->process_id; p6->parent_id=
p3->process_id; p7->parent_id
= p4->process_id; p8-
>parent_id = p7->process_id;
p9->parent_id = p7-
>process_id; dfs(p1);
destroy_tree(p1);
2)
#include <stdio.h>
#include <sys/types.h>
*/
int main(void)
pid_t pid;
pid = vfork();
if (pid == 0)
ChildProcess();
else
ParentProcess();
void ChildProcess(void)
int i;
void ParentProcess(void)
int i;
}
3)
#include <stdio.h>
#include <sys/types.h>
*/
int main(void)
pid_t pid;
pid = vfork();
ChildProcess();
sleep(10);
ParentProcess();
void ChildProcess(void)
int i;
void ParentProcess(void)
int i;
}
4)
#include <stdio.h>
#include <sys/types.h>
int main(void)
pid_t pid;
pid = vfork();
if(pid==0)
ChildProcess();
else
ParentProcess();
}
void ChildProcess(void)
int i;
"); scanf("%d",&i);
void ParentProcess(void)
int i;
scanf("%d",&i);
}
5)
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
void ChildProcess1(void);
void ChildProcess2(void);
void ParentProcess(void);
int main(void)
pid_t pid;
pid = fork();
if (pid < 0) {
return 1;
} else if (pid == 0) {
ChildProcess1();
exit(0);
} else {
wait(NULL);
pid = fork();
if (pid < 0) {
return 1;
} else if (pid == 0) {
ChildProcess2();
exit(0);
} else {
wait(NULL);
ParentProcess();
return 0;
void ChildProcess1(void)
int i;
scanf("%d", &i);
void ChildProcess2(void)
int i;
scanf("%d", &i);
void ParentProcess(void)
{
6)
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
void ChildProcess1(void);
void ChildProcess2(void);
void ParentProcess(void);
int main(void)
pid_t pid;
pid = vfork();
if (pid < 0) {
return 1;
} else if (pid == 0) {
ChildProcess2();
_exit(0);
} else {
wait(NULL);
pid = vfork();
if (pid < 0) {
return 1;
} else if (pid == 0) {
ChildProcess1();
_exit(0);
} else {
wait(NULL);
ParentProcess();
return 0;
void ChildProcess1(void)
int i;
scanf("%d", &i);
void ChildProcess2(void)
{
int i;
scanf("%d", &i);
void ParentProcess(void)
7)
#include <stdio.h>
#include <sys/types.h>
int main(void)
pid_t pid;
pid = fork();
printf("Enter a:");
int a;
scanf("%d",&a);
if(pid==0){
ChildProcess2(a);
wait(1);
else{
pid=fork();
if(pid==0)
ParentProcess();
else{
wait(1);
ChildProcess1(a);
void ChildProcess1(int i)
{
printf("Area : %d\n", i*i);
void ChildProcess2(int i)
void ParentProcess(void){
}
8)
#include <stdio.h>
#include <sys/types.h>
int main(void)
pid_t pid;
pid = fork();
if(pid==0){
ChildProcess2();
else{
wait(1);
pid=fork();
if(pid == 0){
ChildProcess1();
else{
wait(10);
ParentProcess();
void ChildProcess2(void)
{
void ChildProcess1(void)
int ele;
scanf("%d",&ele);
int sum=0;
while(ele){
ele/=10;
void ParentProcess(void){