sj文件如何打开使用,简单快速入手的方法,在扩编以后还是打不开,用什么方法打开更好
int fd;
int pj_pid;
void read_pid(int sig)
{
read(fd,&pj_pid,sizeof(pj_pid));
}
void readmsg(int sig)
{
char buf[50]={0};
read(fd,buf,sizeof(buf));
printf("佩吉说:%s\n",buf);
}
void closeall(int sig)
{
exit(0);
}
void stop(int sig)
{
//给佩吉发送个信号
kill(pj_pid,20);
//自己挂掉
exit(0);
}
int main(int argc,char *argv[])
{
if(argc!=2){
printf("usage:%s <fname>\n",argv[0]);
exit(-1);
}
//创建有名管道
if(access(argv[1],F_OK)){
if(mkfifo(argv[1],0666)){
perror("mkfifo error");
exit(-1);
}
}
//打开有名管道
fd = open(argv[1],O_RDWR);
if(fd<0){
perror("open error");
exit(-1);
}
/* 交换pid号 */
int sj_pid = getpid();
//读取 对方的
read(fd,&pj_pid,sizeof(pj_pid));
//写入 自己的
write(fd,&sj_pid,sizeof(sj_pid));
//告知对方
kill(pj_pid,3);
printf("pj_pid:%d\n",pj_pid);
printf("sj_pid:%d\n",sj_pid);
signal(SIGUSR1,readmsg);
signal(SIGTSTP,closeall);
signal(SIGINT,stop);
/* 聊天 */
char buf[50]={0};
while(1){
bzero(buf,sizeof(buf));
scanf("%s",buf);
write(fd,buf,strlen(buf));
kill(pj_pid,12);
}
return 0;
}