Linux系统编程答案Word文档下载推荐.docx
- 文档编号:19846439
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:8
- 大小:15.97KB
Linux系统编程答案Word文档下载推荐.docx
《Linux系统编程答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Linux系统编程答案Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
{
if(argc!
=3){
write(STDOUT_FILENO,fail,strlen(fail));
exit
(2);
}
intfdin,fdout;
if((fdin=open(argv[1],O_RDONLY))==-1){
if((fdout=
open(argv[2],O_WRONLY|O_CREAT,0777))==-1){
charbuff[256];
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));
return0;
}
2.
errno.h>
stdio.h>
intglobal=6;
charoutstr[]="
parentprocessbegin!
main(void)
pid_tpid;
intvalue=88;
write(STDOUT_FILENO,outstr,sizeof(outstr)-1);
printf("
beginforking\n"
);
if((pid=fork())==-1){
printf("
forkerror\n"
strerror(errno));
if(pid==0){
global++;
value++;
if(pid>
0)sleep
(2);
processidis%d,globalis%d,valueis%d\n"
pid,global,value);
exit(0);
3.
signal.h>
voidsignal_handler(int);
if(signal(SIGCHLD,signal_handler)
==SIG_ERR){
signalerror\n"
if((pid=fork())<
0){
}elseif(pid>
0){//parent
inti=0;
for(;
){
printf("
parent:
iis
%d\n"
++i);
sleep
(1);
}else{//child
i<
10;
i++){
child:
i);
sleep
(2);
_exit(0);
void
signal_handler(intsigno)
if(signo==SIGCHLD){
childprocessdead!
wait(NULL);
exit(0);
4.
pthread.h>
void*
th_fn(void*arg)
inti=1;
char*n=(char*)arg;
for(i=1;
=100;
%s,%d\n"
n,i);
pthread_attr_tattr;
pthread_attr_init(&
attr);
pthread_attr_setdetachstate(
&
attr,PTHREAD_CREATE_DETACHED);
pthread_ttid;
interr;
if((pthread_create(
tid,&
attr,th_fn,"
detached"
))!
pthreadcreateerror\n"
if((err=pthread_join(tid,NULL))!
joinerror\n"
strerror(err));
5.
服务器端:
netdb.h>
time.h>
#defineSOCKADDRstructsockaddr
void
out(structsockaddr_in*adr)
charstr[16];
sockaddress\t%s:
inet_ntop(AF_INET,
(SOCKADDR*)&
adr->
sin_addr.s_addr,str,16),
ntohs(adr->
sin_port));
intport=8888;
intfd;
structsockaddr_inserver,client;
//1constructsocketforIPV4andTCP
if((fd=socket(AF_INET,SOCK_STREAM,0))==-1){
socketerror:
%s\n"
//2constructaddressstructandinitialization
memset(&
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);
//3bindsockettoaddress
if(bind(fd,(SOCKADDR*)&
server,
sizeof(server))==-1){
binderror\n"
//4notifythekernelacceptingconnectionrequest
listen(fd,0);
socklen_tlen=sizeof(client);
while
(1){
//5waitingfortheclientconnection
intsockfd=accept(fd,(SOCKADDR*)&
client,&
len);
out(&
client);
time_tt=time(NULL);
char*p=ctime(&
t);
//6sendthedata
write(sockfd,p,strlen(p));
//7closethesocket
close(sockfd);
close(fd);
客户端:
memory.h>
structsockaddr_inserver;
//1constructthesocketforipv4andtcp
%s\n"
//2constructserveraddress
server.sin_port=htons(atoi(argv[2]));
inet_pton(AF_INET,argv[1],
(structsockaddr*)&
//3connecttotheserver
if(connect(fd,
(structsockaddr*)&
server,sizeof(server))==-1){
cannotconnecttoserver:
strerror(errno));
//4readdatafromnetwork
charbuff[1024];
intnreads=read(fd,buff,sizeof(buff));
//5processthedata
write(STDOUT_FILENO,buff,nreads);
//6closethesocket
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 系统 编程 答案