gpt4 book ai didi

c - 如何在 C 中正确写入 bash fifo?

转载 作者:行者123 更新时间:2023-11-30 16:48:21 24 4
gpt4 key购买 nike

我正在尝试将输出写入 bash fifo,以便可以将其通过管道传输到另一个程序中。然而,一旦我运行它,我就会遇到段错误。有什么想法吗? (这里是C业余爱好者)

(错误输出在本例中是一个全局变量,并在其他地方成功调用)

void print_log(){
printf("about to creat file pointer");
FILE* image_fifo;

printf("open fifo");
image_fifo = fopen("image",O_WRONLY);

if(image_fifo == NULL){
printf("unable to open fifo");
}//end if

else{
printf("writing to fifo");
int j;
for(j=0;j<1024;j++){
fprintf(image_fifo,"%u",errorout[j]);
}//end for
}
fclose(image_fifo);

现在,用这个读出它:(Python 不是很棒吗?)

with open("image","r") as f:
print(f.read())

最佳答案

我认为段错误是由以下原因引起的:

 image_fifo = fopen("image",O_WRONLY);

这用于从 sys/stat.h (或 fcntl.h)调用 Linux 系统样式 open(),其中第二个参数是一个 int ,它指示标志(并且 O_WRONLY 确实在头文件中定义为一个 int 值)。在 stdio.h 中的 C fopen() 中,您可以使用 char * 来完成此操作,例如fopen("name", "w");.

为了确保下次包含程序在结束之前打印的任何内容。您可能还想查看 valgrind 输出;它可能会为您提供一些有关问题所在的线索。

至于“bash style fifo”,我不确定你想做什么,但如果你只是想写入一个文件,那么你做的几乎是正确的。如果你想创建一个管道(我听说有人也称它们为 fifo,所以可能是这种情况),你应该看看 libpipeline库及其使用。

关于c - 如何在 C 中正确写入 bash fifo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009562/

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