2.c

来自「用简单的例子实现了用命名管道实现进程间通信」· C语言 代码 · 共 50 行

C
50
字号

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define MESSAGE_MAX 512

int main(int argc,char *argv[])
{
        char *fifo_name;
        int res;
        int pipe_fd;
        char buffer[MESSAGE_MAX];
	
        if(argc!=3)
        {
                fprintf(stderr,"wrong command!\n");
                exit(1);
        }
	
        fifo_name = (char *)malloc(sizeof(argv[1])+15);
        strcpy(fifo_name,"/tmp/my_fifo_");
        strcat(fifo_name,argv[1]);

        if(access(fifo_name,F_OK)==-1)
        {
                fprintf(stderr,"computer %s is not open\n",argv[1]);
                exit(1);
        }
	
        pipe_fd = open(fifo_name,O_WRONLY);
        if(pipe_fd!=-1)
        {
                printf("send computer %s message:%s\n",argv[1],argv[2]);
                strncpy(buffer,argv[2],(size_t)(MESSAGE_MAX));
                res = write(pipe_fd,buffer,MESSAGE_MAX);
                if(res < 0)
                        fprintf(stderr,"send message to computer %s unsuccessfully!\n",argv[1]);
        }
        else
        {
                fprintf(stderr,"connect computer %s unsuccessfully!\n",argv[1]);
                exit(1);
        }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?