gpt4 book ai didi

c - 在fork-exec之后如何在2个进程之间创建套接字

转载 作者:行者123 更新时间:2023-12-03 11:51:53 24 4
gpt4 key购买 nike

我正在学习C,这是我的问题:我需要将2个进程与套接字AF_UNIX连接。
我的问题是:我该如何实现?

我已经尝试了一些效果不佳的东西:

  • 尝试通过fd。
  • 尝试使用dup,但再次失败,并且2个进程未从父进程获取任何消息。

  • 我可以在父级中打开一个套接字,然后通过execl传递文件描述符吗?还是我应该尝试更“复杂”的东西?

    编辑:代码
    这是P1.c
    int main (){

    printf("Hello this is process 1\n");
    int fd=open("./foo",O_RDWR);
    int h=fork();
    if(h==0)
    {
    sleep(2);
    dup2(fd,0);//note we will be loosing standard input in p2
    execvp("./client",NULL);
    }
    else
    {
    printf("This is from p1 process\n");
    write(fd,"buf",4);
    //do some process with p1
    printf("This is end of p1 process\n");
    }

    return 0;

    }

    这是P2.c
    int main (int argc, char * argv[]){
    int fd=atoi(argv[1]);
    char buf[1024];
    int n=read(fd,buf,1024);
    buf[n]='\0';
    printf("This is from p2\n");
    write(1,buf,strlen(buf));
    exit(EXIT_SUCCESS);

    }

    注意:我不是要使用套接字。

    最佳答案

    Unix套接字的Here is a description和代码示例。

    您需要将其中一个 fork 的进程指定为服务器,将另一个指定为客户端。在服务器中,您必须等待连接。在客户端中,您必须建立通信。

    链接中是每种服务的示例。不要担心代码的长度-大部分是注释。

    请注意,如果只希望进程之间进行“本地”通信,则可能需要研究IPC:fifos,共享内存,消息传递。它们更容易实现。

    关于c - 在fork-exec之后如何在2个进程之间创建套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30305888/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com