gpt4 book ai didi

c - 从 C 中正在运行的进程的 stdout fd 读取

转载 作者:行者123 更新时间:2023-11-30 17:38:30 25 4
gpt4 key购买 nike

经过多次搜索和困惑,我不得不问......

我有一个正在运行的二进制文件,它在无限循环中不断地写入标准输出。

fprintf(stdout,"%s\n",msg);

我们称之为生成器。

生成器将其 PID(通过使用 getpid())发送到另一个称为收集器的二进制文件。

一旦收集器收到 PID,它就会访问 procfs

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

#define MAX_BUF 1024

int main()
{
int fd;
char *generator_fd = "/proc/17163/fd/1"; //This is the process ID sent by generator
char buf[MAX_BUF];

fd = open(generator_fd, O_RDONLY);
read(fd, buf, MAX_BUF);
printf("Received: %s\n", buf);
close(fd);
return 0;
}

但它什么也没打印:(。任何人都可以帮忙

最佳答案

文件描述符是相关进程的本地文件描述符。您无法读取属于另一个进程的文件描述符。 /proc/NNNN/fd/NN 中的内容是指向已打开的文件/设备的符号链接(symbolic link)。如果这是(例如)一个 tty,打开它可能会失败,但肯定不会给你生成器写入 tty 的内容。

在我看来,您想要在进程之间建立一个管道。

关于c - 从 C 中正在运行的进程的 stdout fd 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22113312/

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