рдЕрдЬрдЧрд░ рднреА рдорд╛рд╕реНрдЯрд░ / рджрд╛рд╕ рдХреА рд╢рд░реНрддреЛрдВ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдордирд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рднреА рд░рд╛рдЬрдиреАрддрд┐рдХ рд╢реБрджреНрдзрддрд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ, рд░реЗрдб рд╣реИрдЯ рдХреЗ рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░ рд╡рд┐рдХреНрдЯрд░ рд╕реНрдЯрд┐рдирд░ рдиреЗ рдкрд╛рдпрдерди рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдФрд░ рдХреЛрдб рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдЖрдХреНрд░рд╛рдордХ рдорд╛рд╕реНрдЯрд░ / рджрд╛рд╕ рд╢рд░реНрддреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рдкреВрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗред рд▓реЗрдЦрдХ рдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдЬрд┐рдХ рд░реВрдк рд╕реЗ рддрдЯрд╕реНрде рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдорд╛рдирд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рдЬрд┐рдирдХреЗ рдкреВрд░реНрд╡рдЬ рдЕрд╕рд▓реА рдЧреБрд▓рд╛рдо рдереЗред рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкрдж / рдХрд░реНрдореА рд╣реЛрддреЗ рд╣реИрдВред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╡реГрддреНрддрд┐ рд╣реИред рд╕реНрдЯреАрдирд░ рдиреЗ рд░реЗрдбрд┐рд╕, рдбреНрд░реБрдкрд▓ , рдХрд╛рдЙрдЪрдмрдбреА рдФрд░ рдЬреЛрдВрдЧреЛ рдореЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдПред рддреЛ, Django рдФрд░ CouchDB рдиреЗ рдиреЗрддрд╛ / рдЕрдиреБрдпрд╛рдпреА рдХреЗ рд╕рд╛рде рдорд╛рд╕реНрдЯрд░ / рджрд╛рд╕ рдХреА рдЬрдЧрд╣ рд▓реЗ рд▓реАред

рдЗрд╕реА рд╕рдордп, рд╕реНрдЯрд╛рдЗрдирд░ рдиреЗ рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХреА рдХрд┐ "рджрд╛рд╕рддрд╛" рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдЕрднреА рднреА рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ Git рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛, рд╡реЗрдмрдорд╛рд╕реНрдЯрд░ рдФрд░ рдкреЛрд╕реНрдЯрдорд╛рд╕реНрдЯрд░ред

рдПрдХ рдЧрд░реНрдо рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рд╣реБрдИред

рдЕрдЬрдЧрд░ / рдЦреМрдлрдирд╛рдХ рдХреЛрдбрдмреЗрд╕ рдХреА рдПрдХ рдЦреЛрдЬ рдореЗрдВ "рдЖрдХреНрд░рд╛рдордХ" рд╢рдмреНрджреЛрдВ рдХреЗ рдорд╛рд╕реНрдЯрд░ рдФрд░ рджрд╛рд╕ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдкрд╛рд╕ рдХрдИ рд╕рдорд╛рд╡реЗрд╢ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдФрд░ рдЦреБрд▓реЗ рдФрд░ рдЦрд╛рд▓реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ lib / pty.py рдХреЛрдб рд╣реИ :

STDIN_FILENO = 0
STDOUT_FILENO = 1
STDERR_FILENO = 2

CHILD = 0

def openpty():
    """openpty() -> (master_fd, slave_fd)
    Open a pty master/slave pair, using os.openpty() if possible."""

    try:
        return os.openpty()

, ┬л ┬╗ , , , .

, Python Linux тАФ master/slave . , Python, Linux. , Python Linux . ┬л┬╗ Python , Linux.

, ┬л┬╗ ┬л┬╗ . master , . , doctest doctest.master:

# For backward compatibility, a global instance of a DocTestRunner
# class, updated by testmod.
master = None

, .

, ┬л ┬╗. , nntplib.NNTP() slave(), slave . NNTP, 3.12 ( SLAVE), .

тАФ mbuf.master PyMemoryViewObject C API:

typedef struct {
    PyObject_HEAD
    int flags;          /* state flags */
    Py_ssize_t exports; /* number of direct memoryview exports */
    Py_buffer master; /* snapshot buffer obtained from the original exporter */
} _PyManagedBufferObject;


/* memoryview state flags */
#define _Py_MEMORYVIEW_RELEASED    0x001  /* access to master buffer blocked */
#define _Py_MEMORYVIEW_C           0x002  /* C-contiguous layout */
#define _Py_MEMORYVIEW_FORTRAN     0x004  /* Fortran contiguous layout */
#define _Py_MEMORYVIEW_SCALAR      0x008  /* scalar: ndim = 0 */
#define _Py_MEMORYVIEW_PIL         0x010  /* PIL-style layout */

typedef struct {
    PyObject_VAR_HEAD
    _PyManagedBufferObject *mbuf; /* managed buffer */
    Py_hash_t hash;               /* hash value for read-only views */
    int flags;                    /* state flags */
    Py_ssize_t exports;           /* number of buffer re-exports */
    Py_buffer view;               /* private copy of the exporter's view */
    PyObject *weakreflist;
    Py_ssize_t ob_array[1];       /* shape, strides, suboffsets */
} PyMemoryViewObject;

, master slave . , . , Python 3.8 master/slave .

, , . , Redis : 1.0.0 SLAVEOF NO ONE, -slave -master. , . . , 2003 - master/slave .

2004 Global Language Monitor master/slave . , RFC 977 1986 .

- , тАФ . , , Python. -, , pty UNIX.

, ┬л┬╗ . , ┬л: 5000 ┬╗ тАЬdominiumтАЭ () тАЬfamiliaтАЭ ():

тАЬdominiumтАЭ, тАЬdominusтАЭ, ┬л┬╗, ┬л┬╗, тАЬdomusтАЭ, . . ┬л┬╗, ┬л┬╗. тАЬdomesticтАЭ (┬л┬╗), ┬л ┬╗ , . тАЬDomusтАЭ тАЬfamiliaтАЭ, . . ┬л┬╗, тАЬfamiliaтАЭ тАЬfamulusтАЭ, . . ┬л┬╗. , тАЬpater familiasтАЭ, , , .

, - , , , , тАФ , , . , , . , .

тАЬdominiumтАЭ, , , , () , , , , , , . ., , .

┬л┬╗, ┬л┬╗ : . , . .

┬л !

, , тАФ .

, , . , , .

, .

.

, ┬╗.

тАФ fukkit

Source: https://habr.com/ru/post/hi423057/


All Articles