Rechercher une page de manuel
tee
Langue: ja
Version: 2006-04-28 (openSuse - 09/10/07)
Section: 2 (Appels système)
̾Á°
tee - ¥Ñ¥¤¥×¤ÎÃæ¿È¤òÊ£À½¤¹¤ë½ñ¼°
#define _GNU_SOURCE #include <fcntl.h> long tee(int fd_in, int fd_out, size_t len, unsigned int flags);
ÀâÌÀ
tee() ¤Ï¡¢¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd_in ¤¬»²¾È¤¹¤ë¥Ñ¥¤¥×¤«¤é¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd_out ¤¬»²¾È¤¹¤ë¥Ñ¥¤¥×¤ØºÇÂç len ¥Ð¥¤¥È¤Î¥Ç¡¼¥¿¤òÊ£À½¤¹¤ë¡£ ¤³¤ÎÁàºî¤Ç¤Ï¡¢Ê£À½¤µ¤ì¤ë¥Ç¡¼¥¿¤Ï fd_in ¤«¤é¤Ï¾ÃÈñ¤µ¤ì¤Ê¤¤¡£¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤ì¤é¤Î¥Ç¡¼¥¿¤ò¤³¤Î¸å¤Î splice(2) ¤Ç¥³¥Ô¡¼¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£flags ¤Ï°ìÏ¢¤Î½¤¾þ¥Õ¥é¥°¤Ç¤¢¤ê¡¢ splice(2) ¤ä vmsplice(2) ¤È¶¦Ä̤Î̾Á°¤Ç¤¢¤ë¡£
- SPLICE_F_MOVE
- ¸½ºß¤Î¤È¤³¤í tee() ¤Ç¤Ï²¿¤Î¸ú²Ì¤â¤Ê¤¤¡£ splice(2) »²¾È¡£
- SPLICE_F_NONBLOCK
- Æþ½ÐÎÏ»þ¤ËÄä»ß (block) ¤·¤Ê¤¤¡£ ¾ÜºÙ¤Ï splice(2) »²¾È¡£
- SPLICE_F_MORE
- ¸½ºß¤Î¤È¤³¤í tee() ¤Ç¤Ï²¿¤Î¸ú²Ì¤â¤Ê¤¤¤¬¡¢¾ÍèŪ¤Ë¤Ï¼ÂÁõ¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£ splice(2) »²¾È¡£
- SPLICE_F_GIFT
- tee() ¤Ç¤Ï̤»ÈÍÑ¡£ vmsplice(2) »²¾È¡£
ÊÖ¤êÃÍ
À®¸ù¤·¤Æ´°Î»¤¹¤ë¤È¡¢ tee() ¤ÏÆþ½ÐÎÏ´Ö¤ÇÊ£À½¤µ¤ì¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£ ÊÖ¤êÃÍ 0 ¤Ï¥Ç¡¼¥¿¤ÎžÁ÷¤¬¹Ô¤ï¤ì¤Ê¤«¤Ã¤¿¤³¤È¤ò¼¨¤¹¡£ ¤³¤Î¾ì¹ç¡¢½èÍý¤òÄä»ß (block) ¤·¤Æ¤â̵°ÕÌ£¤Ç¤¢¤ë¡£ ¤Ê¤¼¤Ê¤é¡¢ fd_in ¤¬»²¾È¤¹¤ë¥Ñ¥¤¥×¤Î½ñ¤¹þ¤ß¦¤ËÀܳ¤µ¤ì¤Æ¤¤¤ë¼Ô¤¬¤¤¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£¥¨¥é¡¼¤Î¾ì¹ç¡¢ tee() ¤Ï -1 ¤òÊÖ¤·¡¢ errno ¤Ë¥¨¥é¡¼¤ò¼¨¤¹ÃͤòÀßÄꤹ¤ë¡£
¥¨¥é¡¼
- EINVAL
- fd_in ¤È fd_out ¤Î¤É¤Á¤é¤«¤¬¥Ñ¥¤¥×¤ò»²¾È¤·¤Æ¤¤¤Ê¤¤¡£¤â¤·¤¯¤Ï fd_in ¤È fd_out ¤¬Æ±¤¸¥Ñ¥¤¥×¤ò»²¾È¤·¤Æ¤¤¤ë¡£
- ENOMEM
- ¥á¥â¥êÉÔ¡£
¥Ð¡¼¥¸¥ç¥ó
tee(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux 2.6.17 ¤Ç½é¤á¤ÆÅо줷¤¿¡£½àµò
¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux ¸ÇͤǤ¢¤ë¡£Ãí°Õ
³µÇ°¤È¤·¤Æ¤Ï¡¢ tee() ¤ÏÆó¤Ä¤Î¥Ñ¥¤¥×´Ö¤Ç¥Ç¡¼¥¿¤Î¥³¥Ô¡¼¤ò¹Ô¤¦¡£ ¤·¤«¤·¡¢¼ÂºÝ¤Ë¤Ï¼Â¥Ç¡¼¥¿¤Î¥³¥Ô¡¼¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£ ÆâÉô¤Ç¤Ï¡¢ tee() ¤ÏÆþÎϦ¤ËÂФ¹¤ë»²¾È¤À¤±¤òºîÀ®¤¹¤ë¤³¤È¤Ç½ÐÎϦ¤Ë¥Ç¡¼¥¿¤ò Äɲ乤롣Îã
°Ê²¼¤ÎÎã¤Ï¡¢ tee(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤Ã¤Æ¡¢ ´ðËÜŪ¤Ê tee(1) ¥×¥í¥°¥é¥à¤ò¼ÂÁõ¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£#define _GNU_SOURCE #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <assert.h> #include <errno.h> #include <limits.h> int main(int argc, char *argv[]) { int fd; int len, slen; assert(argc == 2); fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644); if (fd == -1) { perror("open"); exit(EXIT_FAILURE); } do { /* * tee stdin to stdout. */ len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); if (len < 0) { if (errno == EAGAIN) continue; perror("tee"); exit(EXIT_FAILURE); } else if (len == 0) break; /* * Consume stdin by splicing it to a file. */ while (len > 0) { slen = splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); if (slen < 0) { perror("splice"); break; } len -= slen; } } while (1); close(fd); exit(EXIT_SUCCESS); }
´ØÏ¢¹àÌÜ
splice(2), vmsplice(2), feature_test_macros(7)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre