嵌入式Linux应用程序开发期末考试题库及答案

发布时间 : 星期六 文章嵌入式Linux应用程序开发期末考试题库及答案更新完毕开始阅读

set by %d\\n\ getchar(); } } } A、lock_set(fd, F_RDLCK) B、lock_set(fd, F_WRLCK) C、lock_set(fd, O_RDONLY) D、lock_set(fd, O_WRONLY) 1

下面的程序打开一个文件,写入字符串并读出。请选出应填写在空白处的选项。 int main() {

FILE

*stream;

char

s[3]={'a','b','c'};

stream=fopen(\

i=fwrite( __________ ); printf(\ fclose(stream); } A、s,sizeof(char),nmemb,stream B、s,char,nmemb,fd

C、s,sizeof(char),nmemb,FILE D、s,char,nmemb,FILE 4

下面的程序获得当前进程的PID。请选出应填写在空白处的选项。 int main() { printf(\A、getpid() B、getppid() C、open(fd, pid) D、fopen(stream, pid) 1

下面的程序判断fork函数返回值的情况。请选出应填写在空白处的选项。 int main(void) { pid_t result; __________; if(result == -1) { perror(\ exit; } else if(result == 0) { printf(\return value is %d\\nIn child process!!\\nMy PID is%d\\n\ } else { printf(\return value is %d\\nIn father process!!\\nMy PID is%d\\n\ } } A、result = fork() B、result = fork(-1) C、result = fork(0) D、result = fork(1) 1

下面的程序判断fork函数返回值的情况。请选出应填写在空白处的选项。 int main(void) { pid_t result; result = fork() ; if(result == -1) { perror(\ exit; } else if( __________ ) { printf(\return value is %d\\n In father process!!\\nMy PID is%d\\n\ } else { printf(\return value is %d\\n In child process!!\\nMy PID is%d\\n\ } } A、result < 0 B、result == 0 C、result > 0 D、result !== 0

4

下面的程序使用文件名的方式来查找可执行文件,同时使用参数列表的方式。请选出应填写在空白处的选项。 int main() { if(fork()==0) { /*此处相当于调用“ps -ef”命令*/ if( __________ (\ perror(\ } } A、execl B、execle C、execlp D、execve 3

下面的程序使用使用完整的文件目录来查找对应的可执行文件,同时使用参数列表的方式。请选出应填写在空白处的选项。 int main() { if(fork()==0) { /*注意此处已给出ps命令所在的完整路径*/ if( __________ (\ perror(\ } } A、execl B、execle C、execlp D、execve 1

下面的程序将环境变量添加到新建的子进程中去,这里的“env”是查看当前进程环境变量的命令使用使用完整的文件目录来查找对应的可执行文件,同时使用参数列表的方式。请选出应填写在空白处的选项。 命令的完整路径*/ perror(\ } } A、execl B、execle C、execlp D、execve 2

下面的程序将环境变量添加到新建的子进程中去,这里的“env”是查看当前进程环境变量的命令使用使用完整的文件目录来查找对应的可执行文件。请选出应填写在空白处的选项。 int main() { /*命令参数列表,必须以NULL结尾*/ char *arg[]={\ char *envp[]={\ if(fork()==0) { if( __________ (\ perror(\ } } A、execl B、execle C、execlp D、execve 4

if(

__________

int

main()

{

char

*envp[]={\ if(fork()==0) { /*注意此处已给出env

(\

下面的程序为服务器端应用程序,首先建立起socket,然后调用本地端口进行绑定,接着开始与客户端建立联系,并接收客户端发送的消息。请选出应填写在空白处的选项。 #define SERVPORT 3333 #define BACKLOG 10 #define MAX_CONNECTED_NO 10 #define MAXDATASIZE 5 int main() { struct sockaddr_in server_sockaddr,client_sockaddr; int sin_size,recvbytes; int sockfd,client_fd; char buf[MAXDATASIZE]; /*建立socket连接*/ if( __________ ) { perror(\ exit(1); } printf(\success!,sockfd=%d\\n\ /*设置sockaddr_in 结构体中相关参数*/ server_sockaddr.sin_family=AF_INET;

server_sockaddr.sin_port=htons(SERVPORT);

server_sockaddr.sin_addr.s_addr=INADDR_ANY; bzero(&(server_sockaddr.sin_zero),8); /*绑定函数bind*/ if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))== -1) { perror(\ exit(1); } printf(\success!\\n\ /*调用listen函数*/ if(listen(sockfd,BACKLOG)== -1) { perror(\ exit(1); } printf(\ /*调用if((client_fd=accept(sockfd,(struct

acceptsockaddr

函数,等待客户端的连接*/ *)&client_sockaddr,&sin_size))==

-1)

{

-1)

{ perror(\ exit(1); } /*调用recv函数接收客户端的请求*/ if((recvbytes=recv(client_fd,buf,MAXDATASIZE,0))== A、(sockfd = socket(AF_INET,SOCK_STREAM,0))== -1 B、(sockfd = socket(AF_INET,SOCK_STREAM,0))== 0 C、(sockfd = socket(AF_INET,SOCK_STREAM,-1))== -1 D、(sockfd = socket(AF_INET,SOCK_STREAM,-1))== 0 1

下面的程序为客户器端应用程序,客户端在建立起socket之后调用connect函数来建立连接。请选出应填写在空白处的选项。 #define SERVPORT 3333 #define MAXDATASIZE 100 main(int argc,char *argv[]) { int sockfd,sendbytes; char buf[MAXDATASIZE]; struct hostent *host; struct sockaddr_in serv_addr; if(argc < 2) { fprintf(stderr,\enter the server's hostname!\\n\ exit(1); } /*地址解析函数*/ if((host=gethostbyname(argv[1]))==NULL) { perror(\ exit(1); } /*创建socket*/ if( __________ ) { perror(\ exit(1); } /*设置sockaddr_in

结构体中相关参数*/

serv_addr.sin_family=AF_INET;

in_addr

serv_addr.sin_port=htons(SERVPORT);

serv_addr.sin_addr=*((struct

perror(\

exit(1); } printf(\ close(sockfd); }

*)host->h_addr); bzero(&(serv_addr.sin_zero),8); /*调用connect函数主动发起对服务器端的连接*/ if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))== -1) { perror(\ exit(1); } /*发送消息给服务器端*/ if((sendbytes=send(sockfd,\-1) { perror(\ exit(1); } close(sockfd); }

A、(sockfd = socket(AF_INET,SOCK_STREAM,0))== 0 B、(sockfd = socket(AF_INET,SOCK_STREAM,0))== -1 C、(sockfd = socket(AF_INET,SOCK_STREAM,-1))== 0 D、(sockfd = socket(AF_INET,SOCK_STREAM,-1))== -1 2

下面的程序首先新建一子进程,然后让其子进程暂停5s。接下来对原有的父进程使用阻

塞函数,并使用参数使该父进程不会阻塞。若有子进程退出,则阻塞函数返回子进程号;若没有子进程退出,则阻塞函数返回0,并且父进程每隔一秒循环判断一次。请选出应填写在空白处的选项。 int main() { pid_t pc,pr; __________; if(pc<0) printf(\\\n\ /*子进程*/ else if(pc==0) { /*子进程暂停5s*/ sleep(5); /*子进程正常退出*/ exit(0); } /*父进程*/ else { /*循环测试子进程是否退出*/ do { /*调用waitpid,且父进程不阻塞*/ pr=waitpid(pc,NULL,WNOHANG); /*若子进程还未退出,则父进程暂停1s*/ if(pr==0) { printf(\not exited\\n\ sleep(1); } } while(pr==0); /*若发现子进程退出,打印出相应情况*/ if(pr==pc) printf(\child %d\\n\ else printf(\error occured.\\n\ } } A、pc=fork() B、pc=open(pr) C、pc=pr D、pr=pc 1

下面的程序首先新建一子进程,然后让其子进程暂停5s。接下来对原有的父进程使用阻塞函数,并使用参数使该父进程不会阻塞。若有子进程退出,则阻塞函数返回子进程号;若没有子进程退出,则阻塞函数返回0,并且父进程每隔一秒循环判断一次。请选出应填写在空白处的选项。 int main() { pid_t pc,pr; pc=fork() if(pc<0) printf(\ /*子进程*/ else if(pc==0) { /*子进程暂停5s*/ sleep(5); /*子进程正常退出*/ exit(0); } /*父进程*/ else { /*循环测试子进程是否退出*/ do { /*调用阻塞函数,且父进程不阻塞*/ __________; /*若子进程还未退出,则父进程暂停1s*/ if(pr==0) { printf(\child process has not exited\\n\ sleep(1); } } while(pr==0); /*若发现子进程退出,打印出相应情况*/ if(pr==pc) printf(\ else printf(\ } } A、pc=wait(pc,NULL,WNOHANG) B、pc=waitpid(pc,NULL,WNOHANG) C、pr=wait(pc,NULL,WNOHANG) D、pr=waitpid(pc,NULL,WNOHANG) 4

下面的程序建立一个守护进程,该守护进程每隔10s在/tmp/dameon.log中写入一个字符串。请选出应填写在空白处的选项。 #define MAXFILE 65535 int main() { pid_t pc; int i,fd,len; char *buf=\is a Dameon\\n\ len =strlen(buf); /*第一步*/ __________; if(pc<0) { printf(\\\n\ exit(1); } else if(pc>0) exit(0); /*第二步*/ setsid(); /*第三步*/ chdir(\ /*第四步*/ umask(0); /*第五步*/ for(i=0;i

*/

while(1)

if((fd=open(\

{ perror(\ exit(1); } write(fd, buf, len+1); close(fd); sleep(10); } } A、pc=fork() B、fd=open(pc) C、pc=fd

联系合同范文客服:xxxxx#qq.com(#替换为@)