sj文件如何打开使用

sj文件如何打开使用,简单快速入手的方法,在扩编以后还是打不开,用什么方法打开更好

  • 这篇博客: 通过有名管道的方式实现对话中的 2、sj.c 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 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;
    }