如何在C中正确写入bash fifo?
我正试图将一个输出写入bash fifo,这样就可以通过管道将其传输到另一个程序中。然而,只要我运行它,我就会得到一个分段错误。有什么想法吗?(这里是业余爱好者) (errorout在本例中是一个全局变量,并在其他地方成功调用)如何在C中正确写入bash fifo?,c,bash,stream,pipe,fifo,C,Bash,Stream,Pipe,Fifo,我正试图将一个输出写入bash fifo,这样就可以通过管道将其传输到另一个程序中。然而,只要我运行它,我就会得到一个分段错误。有什么想法吗?(这里是业余爱好者) (errorout在本例中是一个全局变量,并在其他地方成功调用) 我认为分割错误是由以下原因造成的: image_fifo = fopen("image",O_WRONLY); 这是为了从sys/stat.h(或fcntl.h)调用Linux系统样式open(),其中第二个参数是一个int,它指示标志(并且O_WRONLY确实定义
我认为分割错误是由以下原因造成的:
image_fifo = fopen("image",O_WRONLY);
这是为了从sys/stat.h
(或fcntl.h
)调用Linux系统样式open()
,其中第二个参数是一个int
,它指示标志(并且O_WRONLY
确实定义为头文件中的int
值)。在Cfopen()
fromstdio.h
中,您可以使用char*
来执行此操作,例如fopen(“名称”,“w”)代码>
确保下次在结束前包括程序打印的任何内容。您可能还想查看valgrind的输出;它可能会给你一些关于出了什么问题的线索
至于“bash风格的fifo”,我不知道你想做什么,但如果你只是想写一个文件,你几乎是正确的。如果您正在尝试制作一个管道(我也听说有人叫它们fifo,可能也是这样),您应该查看该库及其使用情况。除了segfault之外,您还有其他输出吗?什么是bash fifo
?这与常规fifo有何不同代码>是错误的fopen
将char*作为第二个参数。打开编译器警告。您真的需要FIFO(即持久文件系统对象)吗?更典型的是C程序通过pipe()
和fork()
创建和使用匿名管道。bash-fifo,或者更合适的命名管道
,是使用mkfifo
或mknod
等实用程序创建的。
with open("image","r") as f:
print(f.read())
image_fifo = fopen("image",O_WRONLY);