Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中正确写入bash fifo?_C_Bash_Stream_Pipe_Fifo - Fatal编程技术网

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

如何在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确实定义

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

errorout在本例中是一个全局变量,并在其他地方成功调用)


我认为分割错误是由以下原因造成的:

 image_fifo = fopen("image",O_WRONLY);
这是为了从
sys/stat.h
(或
fcntl.h
)调用Linux系统样式
open()
,其中第二个参数是一个
int
,它指示标志(并且
O_WRONLY
确实定义为头文件中的
int
值)。在C
fopen()
from
stdio.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);