Debugging Question:
Download Questions PDF

What is the output of this program no 4?
#include<stdio.h>
#include<pthread.h>

int a;
void *fun_t(void *arg);
void *fun_t(void *arg)
{
a = 20;
pthread_exit("Bye");
}
int main()
{
pthread_t pt;
void *res_t;
a = 10;
if(pthread_create(&pt,NULL,fun_t,NULL) != 0)
perror("pthread_create");
if(pthread_join(pt,&res_t) != 0)
perror("pthread_join");
printf("%dn",a);
return 0;
}
a) 10
b) 20
c) segmentation fault
d) none of the mentioned

Answer:

b) 20
Explanation:
In this program the value of variable "a" is changed by the thread "fun_t".
Output:
[root@localhost google]# gcc -o san san.c -lpthread
[root@localhost google]# ./san
20
[root@localhost google]#

Download Linux Debugging Interview Questions And Answers PDF

Previous QuestionNext Question
What is the output of this program no 3?
#include<stdio.h>
#include<pthread.h>

int a;
void *fun_t(void *arg);
void *fun_t(void *arg)
{
printf("%dn",a);
pthread_exit("Bye");
}
int main()
{
pthread_t pt;
void *res_t;
a = 10;
if(pthread_create(&pt,NULL,fun_t,NULL) != 0)
perror("pthread_create");
if(pthread_join(pt,&res_t) != 0)
perror("pthread_join");
return 0;
}
a) 10
b) 0
c) -1
d) none of the mentioned
Which one of the following statement is not true about this program?
#include<stdio.h>
#include<pthread.h>

void *fun_t(void *arg);
void *fun_t(void *arg)
{
printf("%dn",getpid());
pthread_exit("Bye");
}
int main()
{
pthread_t pt;
void *res_t;
if(pthread_create(&pt,NULL,fun_t,NULL) != 0)
perror("pthread_create");
if(pthread_join(pt,&res_t) != 0)
perror("pthread_join");
printf("%dn",getpid());
return 0;
}
a) both printf statements will print the same value
b) both printf statements will print the different values
c) this program will print nothing
d) none of the mentioned