Linux系统编程答案.doc_第1页
Linux系统编程答案.doc_第2页
Linux系统编程答案.doc_第3页
Linux系统编程答案.doc_第4页
Linux系统编程答案.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux系统编程机试试卷答案一编程题:(共4题100分)1、 利用文件描述符的方式实现将a.txt中的内容拷贝到b.txt中 (运行:./cp a.txt b.txt)#include #include #include #include char *res = copy succeed!n;char *fail = illegal parameter!n;intmain(int argc, char *argv)if(argc != 3)write(STDOUT_FILENO, fail, strlen(fail);exit(2);intfdin, fdout;if(fdin = open(argv1, O_RDONLY) = -1)exit(2);if(fdout = open(argv2, O_WRONLY|O_CREAT, 0777) = -1)exit(2);char buff256;ssize_tnreads;while(nreads = read(fdin, buff, 256) != 0)if(write(fdout, buff, nreads) != nreads)exit(2);close(fdin);close(fdout);write(STDOUT_FILENO, res, strlen(res);return 0;2.#include #include #include #include #include #include int global = 6;char outstr = parent process begin!n;intmain(void)pid_tpid;intvalue = 88;write(STDOUT_FILENO, outstr, sizeof(outstr) - 1);printf(begin forkingn);if(pid = fork() = -1)printf(fork errorn, strerror(errno);exit(2);if(pid = 0)global+;value +;if(pid 0)sleep(2);printf(process id is %d, global is %d, value is %dn, pid, global, value);exit(0);3.#include #include #include #include void signal_handler(int);intmain(void)pid_tpid;if(signal(SIGCHLD, signal_handler) = SIG_ERR)printf(signal errorn);if(pid=fork() 0) /parentint i = 0;for(;)printf(parent: i is %dn, +i);sleep(1);else/childint i = 0;for(; i 10; i+)printf(child: i is %dn, i);sleep(2);_exit(0);exit(0);void signal_handler(int signo)if(signo = SIGCHLD)printf(child process dead!n);wait(NULL);exit(0);4.#include #include #include #include void*th_fn(void *arg)int i = 1;char *n = (char*)arg;for(i = 1; i = 100; i+)printf(%s, %dn, n, i);intmain(void)pthread_attr_tattr;pthread_attr_init(&attr);pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);pthread_ttid;int err;if(pthread_create(&tid, &attr, th_fn, detached) != 0)printf(pthread create errorn);if(err=pthread_join(tid, NULL) != 0)printf(join errorn, strerror(err);return 0;5.服务器端:#include #include #include #include #include #include #include #defineSOCKADDR structsockaddrvoidout(struct sockaddr_in *adr)char str16;printf(sockaddresst%s:%dn, inet_ntop(AF_INET, (SOCKADDR*)&adr-sin_addr.s_addr, str, 16),ntohs(adr-sin_port);intmain(void)int port = 8888;intfd;struct sockaddr_in server, client;/1 construct socket for IPV4 and TCPif(fd=socket(AF_INET, SOCK_STREAM, 0) = -1)printf(socket error: %sn, strerror(errno);exit(2);/2 construct address struct and initializationmemset(&server, 0, sizeof(server);server.sin_family = AF_INET;server.sin_port = htons(port);server.sin_addr.s_addr = INADDR_ANY;/inet_pton(AF_INET, 172.16.1.17, &server.sin_addr.s_addr);/3 bind socket to addressif(bind(fd, (SOCKADDR*)&server, sizeof(server) = -1)printf(bind errorn);exit(2);/4 notify the kernel accepting connection requestlisten(fd, 0);socklen_tlen = sizeof(client);while(1)/ 5 waiting for the client connectionint sockfd = accept(fd, (SOCKADDR*)&client, &len);out(&client);time_t t = time(NULL);char *p = ctime(&t);/ 6 send the datawrite(sockfd, p, strlen(p);/ 7 close the socketclose(sockfd);close(fd);客户端:#include #include #include #include #include #include #include intmain(int argc, char *argv)int fd;struct sockaddr_inserver;/1construct the socket for ipv4 and tcpif(fd=socket(AF_INET, SOCK_STREAM, 0) = -1)printf(socket error:%sn, strerror(errno);exit(2);/2 construct server addressmemset(&server, 0, sizeof(server);server.sin_family = AF_INET;server.sin_port = htons(atoi(argv2);inet_pton(AF_INET, argv1, (struct sockaddr *)&server.sin_addr.s_addr);/3 connect to the serverif(connect(fd, (struct sockaddr*)&server, sizeof(server) = -1)printf(can not connect to server:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论