linux pipe2函数,pipe()函数 Unix/Linux
pipe - 創建管道
內容簡介
#include
int pipe(intfiledes[2]);
描述
pipe() creates a pair of file descriptors, yiibaiing to a pipe inode, and places them in the array yiibaied to byfiledes.filedes[0]is for reading,filedes[1]is for writing.
返回值
On success, zero is returned. On error, -1 is returned, anderrnois set appropriately.
錯誤
標簽
描述
EFAULT
filedes?is not valid.
EMFILE
Too many file descriptors are in use by the process.
ENFILE
The system limit on the total number of open files has been reached.
遵循于
POSIX.1-2001.
實例
The following program creates a pipe, and thenfork(2)s to create a child process. After thefork(2), each process closes the descriptors that it doesn’t need for the pipe (seepipe(7)). The parent then writes the string contained in the program’s command-line argument to the pipe, and the child reads this string a byte at a time from the pipe and echoes it on standard output.
#include
#include
#include
#include
#include
#include
int
main(int argc, char *argv[])
{
int pfd[2];
pid_t cpid;
char buf;
assert(argc == 2);
if (pipe(pfd) == -1) { perror("pipe"); exit(EXIT_FAILURE); }
cpid = fork();
if (cpid == -1) { perror("fork"); exit(EXIT_FAILURE); }
if (cpid == 0) { /* Child reads from pipe */
close(pfd[1]); /* Close unused write end */
while (read(pfd[0], &buf, 1) > 0)
write(STDOUT_FILENO, &buf, 1);
write(STDOUT_FILENO, "
", 1);
close(pfd[0]);
_exit(EXIT_SUCCESS);
} else { /* Parent writes argv[1] to pipe */
close(pfd[0]); /* Close unused read end */
write(pfd[1], argv[1], strlen(argv[1]));
close(pfd[1]); /* Reader will see EOF */
wait(NULL); /* Wait for child */
exit(EXIT_SUCCESS);
}
}
另請參閱
¥ 我要打賞
糾錯/補充
收藏
加QQ群啦,易百教程官方技術學習群
注意:建議每個人選自己的技術方向加群,同一個QQ最多限加 3 個群。
總結
以上是生活随笔為你收集整理的linux pipe2函数,pipe()函数 Unix/Linux的全部內容,希望文章能夠幫你解決所遇到的問題。