c-fprintf()是否适用于在管道中写入,或者我必须始终使用write()



请记住,在使用fprintf()时,我知道需要传递文件描述符来写入管道。我只是有疑问,希望现在就知道;我真的没有任何类型的示例代码。

此外,我想知道fputc((、fputs((等函数是否也能工作。

使用fprintf()需要一个文件流(FILE *(。创建管道时,将获得两个文件描述符。文件描述符与流不同。

您可以使用POSIXfdopen()函数从文件描述符创建文件流;然后,您可以在该文件流上使用fprintf(),或者使用任何其他标准I/O函数,这些函数采用显式文件流参数并写入流。您不能使用fseek();您将得到一个错误(ESPIPE——非法寻道(。

理论上,如果您的系统支持,您可以使用POSIXdprintf()函数直接写入文件描述符

您可以使用fdopen()将文件描述符转换为FILE *,然后使用所有stdio函数。

int pipefd[2];
pipe(pipefd);
FILE *pipeout = fdopen(pipefd[1], "w");
fprintf(pipeout, "Message written to the pipen");

相关内容

最新更新