.\" -*- coding: UTF-8 -*- .\" Copyright 2006, Jens Axboe .\" Copyright 2006, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH tee 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم tee \- مضاعفة محتوى الأنبوب .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#define _GNU_SOURCE\fP /* انظر feature_test_macros(7) */ \fB#include \fP .P \fBssize_t tee(int \fP\fIfd_in\fP\fB, int \fP\fIfd_out\fP\fB, size_t \fP\fIsize\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .\" Return type was long before glibc 2.7 .SH الوصف .\" Example programs http://brick.kernel.dk/snaps .\" .\" .\" add a "tee(in, out1, out2)" system call that duplicates the pages .\" (again, incrementing their reference count, not copying the data) from .\" one pipe to two other pipes. تضاعف \fBtee\fP() حتى \fIsize\fP بايت من البيانات من الأنبوب المشار إليه بواصف الملف \fIfd_in\fP إلى الأنبوب المشار إليه بواصف الملف \fIfd_out\fP. لا تستهلك البيانات المكررة من \fIfd_in\fP؛ لذلك، يمكن نسخ تلك البيانات بواسطة \fBsplice\fP(2) لاحق. .P \fIflags\fP قناع بت يتكون من جمع (OR) صفر أو أكثر من القيم التالية: .TP 1.9i \fBSPLICE_F_MOVE\fP ليس له تأثير حالياً على \fBtee\fP()؛ انظر \fBsplice\fP(2). .TP \fBSPLICE_F_NONBLOCK\fP لا تعيق الإدخال/الإخراج؛ انظر \fBsplice\fP(2) لمزيد من التفاصيل. .TP \fBSPLICE_F_MORE\fP ليس له تأثير حالياً على \fBtee\fP()، لكن قد يُنفذ في المستقبل؛ انظر \fBsplice\fP(2). .TP \fBSPLICE_F_GIFT\fP غير مستخدم لـ \fBtee\fP()؛ انظر \fBvmsplice\fP(2). .SH "قيمة الإرجاع" عند الإكمال بنجاح، ترجع \fBtee\fP() عدد البايتات التي تم تكرارها بين الإدخال والإخراج. قيمة الإرجاع 0 تعني عدم وجود بيانات للنقل، ولا معنى للحظر، لعدم وجود كتّاب متصلين بنهاية الكتابة للأنبوب المشار إليه بـ \fIfd_in\fP. .P عند الخطأ، ترجع \fBtee\fP() \-1 ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEAGAIN\fP حُدد \fBSPLICE_F_NONBLOCK\fP في \fIflags\fP أو وُسم أحد واصفات الملفات على أنه غير مانع (\fBO_NONBLOCK\fP)\fB،\fP وكانت العملية ستمنع. .TP \fBEINVAL\fP \fIfd_in\fP أو \fIfd_out\fP لا يشير إلى أنبوب؛ أو \fIfd_in\fP و \fIfd_out\fP يشيران إلى نفس الأنبوب. .TP \fBENOMEM\fP نفدت الذاكرة. .SH المعايير لينكس. .SH التاريخ لينكس 2.6.17، glibc 2.5. .SH ملاحظات مفاهيمياً، تنسخ \fBtee\fP() البيانات بين الأنبوبين. في الواقع لا يحدث نسخ حقيقي للبيانات: تحت الغطاء، تُسند \fBtee\fP() البيانات إلى الإخراج بمجرد أخذ مرجع إلى الإدخال. .SH أمثلة المثال أدناه ينفذ برنامج \fBtee\fP(1) أساسي باستخدام استدعاء النظام \fBtee\fP(). إليك مثال لاستخدامه: .P .in +4n .EX $\fB date | ./a.out out.log | cat\fP; Tue Oct 28 10:06:00 CET 2014 $\fB cat out.log\fP; Tue Oct 28 10:06:00 CET 2014 .EE .in .SS "مصدر البرنامج" .\" SRC BEGIN (tee.c) \& .EX #define _GNU_SOURCE #include #include #include #include #include #include #include \& int main(int argc, char *argv[]) { int fd; ssize_t size, ssize; \& if (argc != 2) { fprintf(stderr, "Usage: %s \[rs]n", argv[0]); exit(EXIT_FAILURE); } \& fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644); if (fd == \-1) { perror("open"); exit(EXIT_FAILURE); } \& for (;;) { /* * tee stdin to stdout. */ size = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); if (size < 0) { if (errno == EAGAIN) continue; perror("tee"); exit(EXIT_FAILURE); } if (size == 0) break; \& /* * Consume stdin by splicing it to a file. */ while (size > 0) { ssize = splice(STDIN_FILENO, NULL, fd, NULL, size, SPLICE_F_MOVE); if (ssize < 0) { perror("splice"); exit(EXIT_FAILURE); } size \-= ssize; } } \& close(fd); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBsplice\fP(2), \fBvmsplice\fP(2), \fBpipe\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .