include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
define MAXLINE 20 //管道容纳字节数
int main(int argc, char* argv[]){
int n;
int com[2]; //command管道
int res[2]; //response管道
pid_t pid;
int in=atoi(argv[1]); //命令行输入整数
if(pipe(com)<0 || pipe(res)<0)
printf("pipe error");
if((pid=fork())<0)
printf("fork error");
if(pid>0){ //父进程为Client
close(com[0]); //关闭com的读端口
close(res[1]); //关闭res的写端口
for(int i=1;i<4;i++){
write(com[1], &in, sizeof(int)); //把输入送给Server
read(res[0], &in, sizeof(int)); //等待Server处理完毕返回结果
in = in * in;
}
printf("result is %i\n", in);
kill(pid, SIGKILL); //终止子进程,即Server进程
waitpid(pid, NULL, 0); //回收子进程
exit(0);
}
else{ //子进程为Server
close(com[1]); //关闭com的写端口
close(res[0]); //关闭res的读端口
int out;
while(1){
read(com[0],&out,sizeof(int)); //Server从com读出输入
out=out*out; //进行平方运算
write(res[1],&out,sizeof(int)); //将结果写入res
}
}
return 0;
}
CC=gcc
CFLAGS=-Wall
all: client_server
client_server: client_server.c
(CC)(CFLAGS) -o client_server client_server.c
clean:
rm -f client_server
CC=gcc
CFLAGS=-Wall
all: client_server
client_server: client_server.c
(CC)(CFLAGS) -o client_server client_server.c
clean:
rm -f client_server