原文:Linux內核分析:dup、dup2的實現

一 首先需要看一下這兩個函數的作用: 根據manual的解釋: dup:創建一份oldfd的拷貝,使用最小的文件描述符作為新的文件描述符。 dup :創建一份oldfd的拷貝,使用指定的newfd作為新的文件描述符。 要看這兩個函數是怎么實現的,首先得知道Linux對於文件描述符是怎么處理的,參考這篇文章。 二 分析dup 這里看到dup調用了函數sys dup。 在sys dup函數中,關鍵的就 ...

2017-01-07 09:12 0 1542 推薦指數:

查看詳情

關於dupdup2函數

  首先dupdup2函數是用於復制文件描述符的。他們倆的頭文件是#include<unistd.h>   先說一下dup函數。函數定義 int dup(fd) fd是一個某一個打開的文件的描述符,它的返回值是當前進程可用的最小的文件描述符,同時這個文件描述符和fd同時文件表中 ...

Mon Aug 19 23:16:00 CST 2019 0 760
linuxdupdup2函數解析

1. 文件描述符在內核中數據結構在具體說dup/dup2之前,我認為有必要先了解一下文件描述符在內核中的形態。一個進程在此存在期間,會有一些文件被打開,從而會返回一些文件描述符,從shell中運行一個進程,默認會有3個文件描述符存在(0、1、2), 0與進程的標准輸入相關聯,1與進程的標准輸出 ...

Sat Aug 12 09:20:00 CST 2017 0 8302
dupdup2函數

下面兩個函數都可用來復制一個現存的文件描述符: #include<unistd.h> int dup(int filedes); int dup2(int filedes,int filedes2); ...

Fri Feb 06 19:33:00 CST 2015 0 2525
dupdup2用法小結

今天和同學探討了一下關於重定向輸出到文件的問題,其中需要用到dupdup2函數,因此來小小的總結一下。 首先來man一下: dup直接返回一個新的描述符和原來的描述符一樣代表同一個資源,描述符的值就從當前未使用的最小的描述符來取。 而dup2則是可以指定描述符的值,這樣通過把文件的描述符 ...

Wed Sep 07 08:20:00 CST 2016 0 2165
linux c——dup( )和dup2( )函數詳解(轉)

dup()函數和dup2()函數書上在文件操作那一章,已經講過了,這周看重定向這塊,發現它挺重要,就再看了回,記錄下。 1、 dup函數 頭文件及函數定義: dup用來復制參數oldfd所指的文件描述符。當復制成功是,返回最小的尚未被使用過的文件描述符,若有錯誤則返回-1. ...

Mon Jun 03 16:26:00 CST 2019 0 1049
linux中pipe和dup2詳解

1、什么是管道   管道是半雙工的,數據只能向一個方向流動;需要雙方通信時,需要建立起兩個管道; 只能用於父子進程或者兄弟進程之間(具有親緣關系的進程); 單獨構成一種獨立的文件系統:管道對於管道兩 ...

Tue Dec 01 00:13:00 CST 2015 0 3244
進程間通信管道進階篇:linuxdup/dup2函數的用法

由於利用管道實現進程間通信,是通過創建兩個文件描述符,但是描述符的初始化是通過隨機的,就是從可用的文件描述符中取出,並將可用的文件描述符與file對象相關聯,如果我們需要將管道的兩頭與其他的流相關時,就需要重定向操作,重定向fd[0]和fd[1]的file,下面是關於實現重定向的函數dup ...

Sun Jan 06 00:37:00 CST 2013 1 9206
Linux進程間通信(三):匿名管道 popen()、pclose()、pipe()、close()、dup()、dup2()

在前面,介紹了一種進程間的通信方式:使用信號,我們創建通知事件,並通過它引起響應,但傳遞的信息只是一個信號值。這里將介紹另一種進程間通信的方式——匿名管道,通過它進程間可以交換更多有用的數據。 一、什么是管道 如果你使用過Linux的命令,那么對於管道這個名詞你一定不會感覺到陌生,因為我們通常 ...

Mon Sep 05 00:09:00 CST 2016 0 3415
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM