You are on page 1of 5

TEST 4

QUESTION 1
#include <pthread.h>

#include <unistd.h>

#include <stdio.h>

#include <sys/types.h>

#include <stdlib.h>

#include<string.h>

void *prime()

int n, i, flag = 0;

while(1)

printf("THREAD 1-------\n");

sleep(5);

printf("\nEnter a positive integer ");

scanf("%d", &n);

for (i = 2; i <= n / 2; ++i) {

// condition for non-prime

if (n % i == 0) {

flag = 1;

break;

if (n == 1) {

printf("1 is neither prime nor composite.");

else {

if (flag == 0)

printf("%d is a prime number.\n", n);


else

printf("%d is not a prime number.\n", n);

pthread_exit(NULL);

void *palindrome()

char string1[20];

int i, length;

int flag = 0;

while(1)

printf("THREAD 2-------\n");

sleep(5);

printf("\nEnter a string:");

scanf("%s", string1);

length = strlen(string1);

for(i=0;i < length ;i++){

if(string1[i] != string1[length-i-1]){

flag = 1;

break;

if (flag) {

printf(" %s is not a palindrome\n", string1);

else {

printf(" %s is a palindrome\n", string1);

}
pthread_exit(NULL);

void main()

pthread_t thread1, thread2;

pthread_create(&thread1,NULL,prime,NULL);

pthread_create(&thread2,NULL,palindrome,NULL);

pthread_join(thread1,NULL);

pthread_join(thread2,NULL);

OUTPUT

QUESTION 2
#include<stdio.h>

#include<pthread.h>

#include<semaphore.h>

#include<unistd.h>

#include<stdlib.h>

int c=0;
pthread_t t1,t2;

sem_t mutex;

FILE *ptr;

char sentence[1000],ch;

void *start()

sem_wait(&mutex);

ptr=fopen("test.txt","a");

printf("Enter the desired content in %d thread : \n",c+1);

fgets(sentence,sizeof(sentence),stdin);

fprintf(ptr,"%s",sentence);

fclose(ptr);

sleep(10);

c++;

printf("Thread %d is exiting..\n",c);

sem_post(&mutex);

void *end()

sem_wait(&mutex);

ptr=fopen("file2.txt","r");

if(ptr==NULL)

printf("Error while opening the file.\n");

exit(EXIT_FAILURE);

printf("The contents of the file2.txt are:\n");

while((ch=fgetc(ptr))!=EOF)

printf("%c",ch);

fclose(ptr);

sleep(10);

printf("Thread is exiting!\n");
sem_post(&mutex);

void main()

sem_init(&mutex,0,1);

pthread_create(&t1,NULL,start,NULL);

pthread_create(&t2,NULL,end,NULL);

pthread_join(t1,NULL);

pthread_join(t2,NULL);

OUTPUT

You might also like