Rechercher une page de manuel
pipe
Langue: ja
Version: 2004-06-17 (openSuse - 09/10/07)
Section: 2 (Appels système)
̾Á°
pipe - ¥Ñ¥¤¥×¤òÀ¸À®¤¹¤ë½ñ¼°
#include <unistd.h>int pipe(int filedes[2]);
ÀâÌÀ
pipe() ¤Ï¥Ñ¥¤¥×¤Î inode ¤ò»Ø¤¹¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼ (descripter) ¤ÎÁȤòÀ¸À®¤·¡¢ ¤½¤Î¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤ò filedes ¤Ç¼¨¤µ¤ì¤ëÇÛÎó¤Ë³ÊǼ¤¹¤ë¡£ filedes[0] ¤Ë¤ÏÆɤ߽Ф·ÍÑ¡¢ filedes[1] ¤Ë¤Ï½ñ¤¹þ¤ßÍѤΥե¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤¬³ÊǼ¤µ¤ì¤ë¡£ÊÖ¤êÃÍ
À®¸ù¤·¤¿¾ì¹ç 0 ¤¬Ê֤롣¼ºÇÔ¤·¤¿¾ì¹ç -1 ¤¬Ê֤ꡢ errno ¤¬¥¨¥é¡¼¤ÎÆâÍƤ˽¾¤Ã¤ÆÀßÄꤵ¤ì¤ë¡£¥¨¥é¡¼
- EFAULT
- filedes ¤¬Ìµ¸ú¤ÊÃͤǤ¢¤ë¡£
- EMFILE
- ¤³¤Î¥×¥í¥»¥¹¤Ç»È¤ï¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤¬Â¿¤¹¤®¤ë¡£
- ENFILE
- ¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ÎÁí¿ô¤¬¥·¥¹¥Æ¥à¤ÎÀ©¸Â¤Ë㤷¤¿¡£
½àµò
POSIX.1-2001.Îã
°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¥Ñ¥¤¥×¤òÀ¸À®¤·¡¢¤½¤Î¸å fork(2) ¤Ç»Ò¥×¥í¥»¥¹¤òÀ¸À®¤¹¤ë¡£ fork(2) ¤Î¸å¡¢³Æ¥×¥í¥»¥¹¤Ï¥Ñ¥¤¥× (pipe(7) ¤ò»²¾È) ¤ËɬÍפ¬¤Ê¤¯¤Ê¤Ã¤¿¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤ò¥¯¥í¡¼¥º¤¹¤ë¡£ ¿Æ¥×¥í¥»¥¹¤Ï¥×¥í¥°¥é¥à¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¤¿ô¤Ë´Þ¤Þ¤ì¤ë ʸ»úÎó¤ò¥Ñ¥¤¥×¤Ø½ñ¤¹þ¤ß¡¢ »Ò¥×¥í¥»¥¹¤Ï¤³¤Îʸ»úÎó¤ò¥Ñ¥¤¥×¤«¤é 1 ¥Ð¥¤¥È¤º¤ÄÆɤ߹þ¤ó¤Çɸ½à½ÐÎϤ˥¨¥³¡¼¤¹¤ë¡£#include <sys/wait.h> #include <assert.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> 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) { /* »Ò¥×¥í¥»¥¹¤¬¥Ñ¥¤¥×¤«¤éÆɤ߹þ¤à */ close(pfd[1]); /* »ÈÍѤ·¤Ê¤¤ write ¦¤Ï¥¯¥í¡¼¥º¤¹¤ë */ while (read(pfd[0], &buf, 1) > 0) write(STDOUT_FILENO, &buf, 1); write(STDOUT_FILENO, "\n", 1); close(pfd[0]); _exit(EXIT_SUCCESS); } else { /* ¿Æ¥×¥í¥»¥¹¤Ï argv[1] ¤ò¥Ñ¥¤¥×¤Ø½ñ¤¹þ¤à */ close(pfd[0]); /* »ÈÍѤ·¤Ê¤¤ read ¦¤Ï¥¯¥í¡¼¥º¤¹¤ë */ write(pfd[1], argv[1], strlen(argv[1])); close(pfd[1]); /* Æɤ߹þ¤ß¦¤¬ EOF ¤Ë½Ð²ñ¤¦ */ wait(NULL); /* »Ò¥×¥í¥»¥¹¤òÂÔ¤Ä */ exit(EXIT_SUCCESS); } }
´ØÏ¢¹àÌÜ
fork(2), read(2), socketpair(2), write(2), popen(3), pipe(7)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre