1. Which one of the following string will print first by this program?
#include<stdio.h>
#include<pthread.h>
void *fun_t(void *arg);
void *fun_t(void *arg)
{
printf("Sanfoundry\n");
pthread_exit("Bye");
}
int main()
{
pthread_t pt;
void *res_t;
if(pthread_create(&pt,NULL,fun_t,NULL) != 0)
perror("pthread_create");
printf("Linux\n");
if(pthread_join(pt,&res_t) != 0)
perror("pthread_join");
return 0;
}
a) Linux
b) Sanfoundry
c) it can not be predicted
d) none of the mentioned
View Answer
Explanation: It depends upon the scheduler.
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
[root@localhost sanfoundry]# ./san
Sanfoundry
Linux
[root@localhost threads]#
2. What is the output of this program?
#include<stdio.h>
#include<pthread.h>
void *fun_t(void *arg);
void *fun_t(void *arg)
{
int ret;
ret = pthread_exit("Bye");
printf("%d\n",ret);
}
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");
return 0;
}
a) 0
b) 1
c) -1
d) none of the mentioned
View Answer
Explanation: The function pthread_exit() does not return any value. Hence this program will give an error.
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
san.c: In function ‘fun_t’:
san.c:8:6: error: void value not ignored as it ought to be
[root@localhost sanfoundry]#
3. What is the output of this program?
#include<stdio.h>
#include<pthread.h>
void *fun_t(void *arg);
void *fun_t(void *arg)
{
printf("Sanfoundry\n");
pthread_exit("Bye");
}
int main()
{
pthread_t pt;
void *res_t;
if(pthread_create(&pt,NULL,fun_t,NULL) != 0)
perror("pthread_create");
return 0;
}
a) this program will print the string “Sanfoundry”
b) this program will print nothing
c) segmentation fault
d) run time error
View Answer
Explanation: The pthread_join() function waits for the thread to terminate.
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
[root@localhost sanfoundry]# ./san
[root@localhost sanfoundry]#
4. What is the output of this program?
#include<stdio.h>
#include<pthread.h>
void *fun_t(void *arg);
void *fun_t(void *arg)
{
printf("%d\n",a);
pthread_exit("Bye");
}
int main()
{
int a;
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
View Answer
Explanation: Each thread has its own stack so local variables are not shared among thread. Hence this program will give an error.
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
san.c: In function ‘fun_t’:
san.c:7:16: error: ‘a’ undeclared (first use in this function)
san.c:7:16: note: each undeclared identifier is reported only once for each function it appears in
[root@localhost sanfoundry]#
5. What is the output of this program?
#include<stdio.h>
#include<pthread.h>
int a;
void *fun_t(void *arg);
void *fun_t(void *arg)
{
printf("%d\n",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
View Answer
Explanation: Thread of the same process shares the global variables.
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
[root@localhost sanfoundry]# ./san
10
[root@localhost sanfoundry]#
6. What is the output of this program?
#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("%d\n",a);
return 0;
}
a) 10
b) 20
c) segmentation fault
d) none of the mentioned
View Answer
Explanation: In this program the value of variable “a” is changed by the thread “fun_t”.
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
[root@localhost sanfoundry]# ./san
20
[root@localhost sanfoundry]#
7. 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("%d\n",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("%d\n",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
View Answer
Explanation: All the threads of the same process have same PID.
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
[root@localhost sanfoundry]# ./san
12981
12981
[root@localhost sanfoundry]#
8. What is the output of this program?
#include<stdio.h>
#include<pthread.h>
#include<fcntl.h>
int fd;
void *fun_t(void *arg);
void *fun_t(void *arg)
{
char buff[10];
int count;
count = read(fd,buff,10);
printf("%d\n",count);
pthread_exit("Bye");
}
int main()
{
pthread_t pt;
void *res_t;
fd = open("san.c",O_RDONLY);
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) segmentation fault
View Answer
Explanation: Open file descritpors can be shares between threads of the same process
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
[root@localhost sanfoundry]# ./san
10
[root@localhost sanfoundry]#
9. What is the output of this program?
#include<stdio.h>
#include<pthread.h>
#include<fcntl.h>
void *fun_t(void *arg);
void *fun_t(void *arg)
{
pthread_exit("Bye");
printf("Sanfoundry\n");
}
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("%s\n",res_t);
return 0;
}
a) Sanfoundry
b) Bye
c) segementation fault
d) run time error
View Answer
Explanation: None.
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
[root@localhost sanfoundry]# ./san
Bye
[root@localhost sanfoundry]#
10. What is the output of this program?
#include<stdio.h>
#include<pthread.h>
void *fun_t(void *arg);
void *fun_t(void *arg)
{
sleep(1);
}
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("%s\n",res_t);
return 0;
}
a) this process will pause
b) segmentation fault
c) run time error
d) none of the mentioned
View Answer
Explanation: This program is trying to print the return value of the thread, but pthread_exit() function is not present in the thread.
Output:
[root@localhost sanfoundry]# gcc -o san san.c -lpthread
[root@localhost sanfoundry]# ./san
Segmentation fault (core dumped)
[root@localhost sanfoundry]#
Sanfoundry Global Education & Learning Series – Linux Administration & Programming.
Here’s the list of Best Books in Linux Commands & Shell Programming.
Here’s the list of Best Books in Linux Kernel, Device-Drivers & System Programming.
To practice all questions on Linux Administration & Programming, here is complete set of 1000+ Multiple Choice Questions and Answers on Linux.
- Buy Information Technology Books
- Apply for Linux Internship
- Practice Programming MCQs
- Apply for Programming Internship
- Buy Linux Books