&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
%POHLVO 4IJO&NCFEEFE�4PGUXBSF�-BCPSBUPSZ4VOHLZVOLXBO�6OJWFSTJUZIUUQ���OZY�TLLV�BD�LS�
1JQFT�BOE�'*'0
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• )PX�EPFT�UIF�6OJY�LFSOFM�SFQSFTFOU�PQFO�GJMFT – 5XP�EFTDSJQUPST�SFGFSFODJOH�UXP�EJTUJODU�PQFO�GJMFT
0QFO�'JMFT�JO�UIF�,FSOFM
%FTDSJQUPS��stdout�QPJOUT�UP�UIF�UFSNJOBM�BOE�EFTDSJQUPS��QPJOUT�UP�BO�PQFO�EJTL�GJMF
fd 0fd 1fd 2fd 3fd 4
%FTDSJQUPS�UBCMF<POF�UBCMF�QFS�QSPDFTT> 0QFO�GJMF�UBCMF�<TIBSFE�CZ�BMM�QSPDFTTFT> JOPEF UBCMF<TIBSFE�CZ�BMM�QSPDFTTFT>
'JMF�QPTrefcnt=1...
'JMF�QPTrefcnt=1...
stderrstdoutstdin 'JMF�BDDFTT
...
'JMF�TJ[F'JMF�UZQF
'JMF�BDDFTT...
'JMF�TJ[F'JMF�UZQF
'JMF�"�UFSNJOBM
'JMF�#�EJTL
*OGP�JO�statTUSVDU
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• 5XP�EJTUJODU�EFTDSJQUPST�TIBSJOH�UIF�TBNF�EJTL�GJMF�UISPVHI�UXP�EJTUJODU�PQFO�GJMF�UBCMF�FOUSJFT– F�H� �DBMMJOH�open() UXJDF�XJUI�UIF�TBNF�GJMFOBNF BSHVNFOU
'JMF�4IBSJOH
fd 0fd 1fd 2fd 3fd 4
%FTDSJQUPS�UBCMF<POF�UBCMF�QFS�QSPDFTT> 0QFO�GJMF�UBCMF�<TIBSFE�CZ�BMM�QSPDFTTFT> JOPEF UBCMF<TIBSFE�CZ�BMM�QSPDFTTFT>
'JMF�QPTrefcnt=1...
'JMF�QPTrefcnt=1...
'JMF�BDDFTT...
'JMF�TJ[F'JMF�UZQF
'JMF�"
'JMF�#
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• "�DIJME�QSPDFTT�JOIFSJUT JUT�QBSFOUˏT�PQFO�GJMFT)PX�1SPDFTTFT�4IBSF�'JMFT
5IF�TJUVBUJPO�JNNFEJBUFMZ�BGUFS�fork()
GE �GE �GE �GE �GE �
%FTDSJQUPS�UBCMF<POF�UBCMF�QFS�QSPDFTT> 0QFO�GJMF�UBCMF�<TIBSFE�CZ�BMM�QSPDFTTFT> JOPEF UBCMF<TIBSFE�CZ�BMM�QSPDFTTFT>
'JMF�QPTrefcnt=2...
'JMF�QPTrefcnt=2...
'JMF�BDDFTT
...
'JMF�TJ[F'JMF�UZQF
'JMF�"
'JMF�#
1BSFOUˏT�UBCMF
'JMF�BDDFTT...
'JMF�TJ[F'JMF�UZQF
GE �GE �GE �GE �GE �
$IJMEˏT�UBCMF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• 2��)PX�EPFT�B�TIFMM�JNQMFNFOU�*�0�SFEJSFDUJPO • "��#Z�DBMMJOH�UIF�dup2(oldfd, newfd) GVODUJPO
– $PQJFT�UIF�QFS�QSPDFTT�EFTDSJQUPS�UBCMF�FOUSZ�oldfd UP�FOUSZ�newfd
*�0�3FEJSFDUJPO
a
b
GE �GE �GE �GE �GE �
%FTDSJQUPS�UBCMFCFGPSF dup2(4,1)b
b
GE �GE �GE �GE �GE �
%FTDSJQUPS�UBCMFBGUFS dup2(4,1)
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• #FGPSF�DBMMJOH�dup2(4, 1) �stdout EFTDSJQUPS���QPJOUT�UP�UIF�UFSNJOBM�BOE�EFTDSJQUPS���QPJOUT�UP�BO�PQFO�EJTL�GJMF
*�0�3FEJSFDUJPO�&YBNQMF��
GE �GE �GE �GE �GE �
%FTDSJQUPS�UBCMF<POF�UBCMF�QFS�QSPDFTT> 0QFO�GJMF�UBCMF�<TIBSFE�CZ�BMM�QSPDFTTFT> JOPEF UBCMF<TIBSFE�CZ�BMM�QSPDFTTFT>
'JMF�QPTrefcnt=1���'JMF�QPTrefcnt=1���
'JMF�BDDFTT���
'JMF�TJ[F'JMF�UZQF
'JMF�"
'JMF�# 'JMF�BDDFTT
���
'JMF�TJ[F'JMF�UZQF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• "GUFS�DBMMJOH�dup2(4, 1) �stdout JT�SFEJSFDUFE�UP�UIF�EJTL�GJMF�QPJOUFE�CZ�EFTDSJQUPS��
*�0�3FEJSFDUJPO�&YBNQMF��
GE �GE �GE �GE �GE �
%FTDSJQUPS�UBCMF<POF�UBCMF�QFS�QSPDFTT> 0QFO�GJMF�UBCMF�<TIBSFE�CZ�BMM�QSPDFTTFT> JOPEF UBCMF<TIBSFE�CZ�BMM�QSPDFTTFT>
'JMF�QPTrefcnt=0���'JMF�QPTrefcnt=2���
'JMF�BDDFTT���
'JMF�TJ[F'JMF�UZQF
'JMF�"
'JMF�# 'JMF�BDDFTT
���
'JMF�TJ[F'JMF�UZQF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• 1JQFT– 5IF�PMEFTU�GPSN�PG�6/*9�*1$�*OUFS�1SPDFTT�$PNNVOJDBUJPO– 1SPWJEFE�CZ�BMM�6OJY�TZTUFNT
• 5XP�MJNJUBUJPOT– )BMG�EVQMFY��EBUB�GMPXT�POMZ�JO�POF�EJSFDUJPO– $BO�POMZ�CF�VTFE�CFUXFFO�QSPDFTTFT�UIBU�IBWF�B�DPNNPO�BODFTUPS
• 6TVBMMZ�VTFE�CFUXFFO�B�QBSFOU�BOE�JUT�DIJME�QSPDFTTFT
1JQFT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• int pipe (int fd[2]);– 5XP�GJMF�EFTDSJQUPST�BSF�SFUVSOFE�UISPVHI�UIF�fd BSHVNFOU– 5IF�PVUQVU�PG�fd[1] JT�UIF�JOQVU�GPS�fd[0]
$SFBUJOH�1JQFT��
fd[0] 0QFO�GPS�SFBEJOHfd[1] 0QFO�GPS�XSJUJOH
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����$SFBUJOH�1JQFT��
QBSFOU�à DIJME DIJME�à QBSFOU
• QBSFOU�DMPTFT�fd[0]• DIJME�DMPTFT�fd[1] • DIJME�DMPTFT�fd[0]
• QBSFOU�DMPTFT�fd[1]
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 8IFO�POF�FOE�PG�B�QJQF�JT�DMPTFE – SFBEJOH GSPN�B�QJQF�SFUVSOT�BO�FOE�PG�GJMF�&0'– XSJUJOH UP�B�QJQF�DBVTFT�4*(1*1& UP�CF�HFOFSBUFE �BOE�UIF�XSJUF�SFUVSOT�BO�FSSPS�&1*1&– "�XSJUF�PG�1*1&@#6'�LFSOFMˏT�QJQF�CVGGFS�TJ[F�CZUFT�PS�MFTT�XJMM�OPU�CF�JOUFSMFBWFE�XJUI�UIF�XSJUFT�GSPN�PUIFS�QSPDFTTFT�– fstat GVODUJPO�SFUVSOT�B�GJMF�UZQF�PG�'*'0�GPS�UIF�QJQF�GJMF�EFTDSJQUPST
3FBEJOH�8SJUJOH�1JQFT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 8IFO�UIF�MBTU�XSJUFS�DMPTFT �BO�&0'�PDDVST– 5IBU�JT �JU�JT�WFSZ�DSVDJBM�UP�DMPTF�VOOFDFTTBSZ�GJMF�EFTDSJQUPST PG�B�QJQF– 8IFO�GPSLFE �UIF�GJMF�EFTDSJQUPS�PG�UIF�QBSFOU�JT�EVQMJDBUFE
• .VTU�VTF�close() DBSFGVMMZ�DPOTJEFSJOH�UIJT�• 8IFO�CPUI�UIF�QBSFOU�BOE�DIJME�QSPDFTTFT�DMPTF�UIF�QJQFˏT�GJMF�EFTDSJQUPST�GPS�XSJUJOH �UIFO�BO�&0'�PDDVST �TFOEJOH�UIF�DPOUFOUT�UP�UIF�SFBEFS�
– 6OEFSTUBOE�IPX�dup2() FYBDUMZ�XPSLT
1JQF�$IBSBDUFSJTUJDT
stdin JT�SFEJSFDUFE�UP�fd[0]à JOQVU�DPNFT�GSPN�fd[0]$MPTJOH�PG�fd[0] EPFT�OPU�DMPTF�UIF�GJMF�JU�QPJOUT�UP��0OMZ�UIF�GJMF�EFTDSJQUPS�fd[0] JT�DMPTFE�
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����6TJOH�1JQFT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• int mkfifo (const char *path, mode_t mode)– /BNFE�QJQFT– 6OSFMBUFE�QSPDFTTFT�DBO�FYDIBOHF�EBUB �XIFSFBT�QJQFT�DBO�CF�POMZ�VTFE�CFUXFFO�SFMBUFE�QSPDFTTFT�– '*'0�JT�B�UZQF�PG�GJMF��'*'0�UZQF�4@*4'*'0�NBDSP– 0ODF�B�'*'0�JT�DSFBUFE �OPSNBM�GJMF�*�0�GVODUJPOT�BMM�XPSL�XJUI�'*'0
• /usr/bin/mkfifo QSPHSBN�DBO�CF�VTFE�UP�NBLF�'*'0T�VTJOH�UIF�DPNNBOE�MJOF
'*'0T
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 0QFOJOH�B�'*'0– "O�PQFO�GPS�SFBE�XSJUF�POMZ�JT�CMPDLFE�VOUJM�TPNF�PUIFS�QSPDFTT�PQFOT�UIF�'*'0�GPS�XSJUJOH�SFBEJOH
• 3FBEJOH�8SJUJOH– 8SJUJOH�UP�B�'*'0�UIBU�OP�QSPDFTT�IBT�PQFOFE�GPS�SFBEJOH�DBVTFT�4*(1*1& UP�CF�HFOFSBUFE�– 8IFO�UIF�MBTU�XSJUFS�GPS�B�'*'0�DMPTFT�UIF�'*'0 �BO�&0'�JT�HFOFSBUFE�GPS�UIF�SFBEFS�PG�UIF�'*'0�– 1*1&@#6'��UIF�NBYJNVN�BNPVOU�PG�EBUB�UIBU�DBO�CF�XSJUUFO�BUPNJDBMMZ�UP�B�'*'0�XJUIPVU�CFJOH�JOUFSMFBWFE�BNPOH�NVMUJQMF�XSJUFST
6TJOH�'*'0T
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• %VQMJDBUJOH�B�TUSFBN– 4IFMM�DPNNBOET�UP�QBTT�EBUB�GSPN�POF�TIFMM�QJQFMJOF�UP�BOPUIFS�XJUIPVU�DSFBUJOH�JOUFSNFEJBUF�UFNQPSBSZ�GJMFT
6TF�$BTFT�PG�'*'0T��
QSPH� tee
QSPH�
QSPH�GJGP�JOGJMF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• $MJFOU�4FSWFS�DPNNVOJDBUJPO– "�DMJFOU�TFSWFS�BQQMJDBUJPO�UP�QBTT�EBUB�CFUXFFO�UIF�DMJFOU�BOE�UIF�TFSWFS�PO�UIF�TBNF�NBDIJOF�
• $MJFOUT�XSJUF�UP�B�ˑXFMM�LOPXO˒�'*'0�UP�TFOE�SFRVFTUT�UP�UIF�TFSWFS
6TF�$BTFT�PG�'*'0T��
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• *1$�*OUFS�1SPDFTT�$PNNVOJDBUJPO– 4JHOBM– 1JQF– /BNFE�QJQF�'*'0– 4IBSFE�NFNPSZ– 4FNBQIPSF– 4PDLFUT– ˘
4VNNBSZ
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• &YQBOE�ZPVS�NJOJ�TIFMM�TXTI� FYFD�GBNJMZ• 'PS�QSPHSBNT�PUIFS�UIBO�UIF�GPMMPXJOH��exit �cd �pwd �rm �mv �cp �cat �head �tail• 'PS�QSPHSBNT�UIBU�BSF�MPBEFE�BOE�FYFDVUFE�GPSL�ˊ FYFD��
– ls– man– grep– sort– awk– bc– ˘
&YFSDJTF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
� 3FEJSFDUJPO���1JQF• *OQVU�SFEJSFDUJPO
– *G�UIF�GJMF�EPFT�OPU�FYJTU �QSJOU�PVU�ˑTXTI��/P�TVDI�GJMF˒• 0VUQVU�SFEJSFDUJPO• 1JQFMJOF
– *O�TXTI �XIFO�QJQFMJOFT�BSF�VTFE �VTJOH�SFEJSFDUJPO�JT�SFTUSJDUFE�» *G���QJQFT�BSF�VTFE�F�H� �A | B | C | D �JOQVU�SFEJSFDUJPO�DBO�POMZ�CF�VTFE�XJUI�"�MFGUNPTU�QSPDFTT BOE�PVUQVU�SFEJSFDUJPO�DBO�POMZ�CF�VTFE�XJUI�%�SJHIUNPTU�QSPDFTT
à A < file1 | B | C | D > file2
&YFSDJTF] 1JQFMJOF� *OQVU�SFEJSFDUJPO� 0VUQVU�SFEJSFDUJPO�� 0VUQVU�SFEJSFDUJPO�BQQFOEJOH
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
� IFBE• 4:/014:4
– head [option] file• %&4$3*15*0/
– 1SJOU�UIF�GJSTU ���MJOFT�PG�file UP�TUBOEBSE�PVUQVU– -n K PQUJPO�à 1SJOU�,�MJOFT�JOTUFBE�PG���– *G�file EPFT�OPU�FYJTU �SFDFJWF�JOQVU�GSPN�TUBOEBSE�JOQVU
� UBJM• 4:/014:4
– tail [option] file• %&4$3*15*0/
– 1SJOU�UIF�MBTU ���MJOFT�PG�file UP�TUBOEBSE�PVUQVU– -n K PQUJPO�à 1SJOU�,�MJOFT�JOTUFBE�PG���– *G�file EPFT�OPU�FYJTU �SFDFJWF�JOQVU�GSPN�TUBOEBSE�JOQVU
&YFSDJTF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 'VODUJPOBMJUJFT– FYFW�GBNJMZ– 4JHOBM�IBOEMJOH– $VTUPN�DPNNBOET��DBU �DQ �NW �SN �DE �QXE �FYJU �IFBE �UBJM– 3FEJSFDUJPO���1JQFMJOF
"TTJHONFOU���
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• &WBMVBUJPO– %BUF��������������8FE�
• ��IPVS�XJMM�CF�HJWFO�CFGPSF�FWBMVBUJPO�• 5FTU�ZPVS�PXO�QSPHSBN�EVSJOH�UIF�HJWFO�UJNF�
– ���DPNNBOET�XJMM�CF�UFTUFE�• *G�ZPVS�QSPHSBN�GBJMT�EVSJOH�FYFDVUJPO �JU�XJMM�OPU�CF�GVSUIFS�FWBMVBUFE�
– 3F�TVCNJTTJPO�BOE�SF�FWBMVBUJPO�XJMM�OPU�CF�BDDFQUFE�
"TTJHONFOU���