请记住,在使用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");