int main(int argc, const char *argv[])
{
double data[3] = {0};
double s = 0;
int rfd = atoi(argv[1]);
while(1){
read(rfd,data,24);
printf("fdjk:%g\n",data[2]);
if(data[2] == 0.0){
//长方形
s = data[0] * data[1];
printf("长方形的面积:%g\n",s);
}else{
//三角形
double a = data[0];
double b = data[1];
double c = data[2];
double p = (a+b+c)/2;
s = sqrt(p *(p-a)*(p-b)*(p-c));
printf("三角形面积:%g\n",s);
}
}
return 0;
}
#include <sys/wait.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
int main(int argc, const char *argv[])
{
int pipeId[2] = {0};
pipe(pipeId);
int res = fork();
if(res > 0){
//父线程
while (1){
double buf[3] = {0};
printf("请输入三角形边或长方形:");
scanf("%lf %lf %lf",buf,buf+1,buf+2);
while(getchar() != 10);
write(pipeId[1],buf,24);
sleep(1);
}
}else if(res == 0){
//子线程
char rfd[4] = {0};
sprintf(rfd,"%d",pipeId[0]);
execl("./3","3",rfd,NULL);
perror("execl");
}
//else{
// perror("Error fork");
// return 1;
//}
return 0;
}