首先dup和dup2函數是用於復制文件描述符的。他們倆的頭文件是#include<unistd.h> 先說一下dup函數。函數定義 int dup(fd) fd是一個某一個打開的文件的描述符,它的返回值是當前進程可用的最小的文件描述符,同時這個文件描述符和fd同時文件表中 ...
今天和同學探討了一下關於重定向輸出到文件的問題,其中需要用到dup和dup 函數,因此來小小的總結一下。 首先來man一下: dup直接返回一個新的描述符和原來的描述符一樣代表同一個資源,描述符的值就從當前未使用的最小的描述符來取。 而dup 則是可以指定描述符的值,這樣通過把文件的描述符指定為STDOUT FILENO,這樣就相當於重定向輸出為文件了。 所以有以下程序: 然而,調用的兩次prin ...
2016-09-07 00:20 0 2165 推薦指數:
首先dup和dup2函數是用於復制文件描述符的。他們倆的頭文件是#include<unistd.h> 先說一下dup函數。函數定義 int dup(fd) fd是一個某一個打開的文件的描述符,它的返回值是當前進程可用的最小的文件描述符,同時這個文件描述符和fd同時文件表中 ...
下面兩個函數都可用來復制一個現存的文件描述符: #include<unistd.h> int dup(int filedes); int dup2(int filedes,int filedes2); ...
一、首先需要看一下這兩個函數的作用: 根據manual的解釋: dup:創建一份oldfd的拷貝,使用最小的文件描述符作為新的文件描述符。 dup2:創建一份oldfd的拷貝,使用指定的newfd作為新的文件描述符。 要看這兩個函數是怎么實現的,首先得知道Linux對於文件 ...
1. 文件描述符在內核中數據結構在具體說dup/dup2之前,我認為有必要先了解一下文件描述符在內核中的形態。一個進程在此存在期間,會有一些文件被打開,從而會返回一些文件描述符,從shell中運行一個進程,默認會有3個文件描述符存在(0、1、2), 0與進程的標准輸入相關聯,1與進程的標准輸出 ...
和dup2的解釋: 系統調用dup和dup2能夠復制文件描述符。dup返回新的文件文件描述符(沒有用的文件描 ...
dup()函數和dup2()函數書上在文件操作那一章,已經講過了,這周看重定向這塊,發現它挺重要,就再看了回,記錄下。 1、 dup函數 頭文件及函數定義: dup用來復制參數oldfd所指的文件描述符。當復制成功是,返回最小的尚未被使用過的文件描述符,若有錯誤則返回-1. ...
1、什么是管道 管道是半雙工的,數據只能向一個方向流動;需要雙方通信時,需要建立起兩個管道; 只能用於父子進程或者兄弟進程之間(具有親緣關系的進程); 單獨構成一種獨立的文件系統:管道對於管道兩 ...
在前面,介紹了一種進程間的通信方式:使用信號,我們創建通知事件,並通過它引起響應,但傳遞的信息只是一個信號值。這里將介紹另一種進程間通信的方式——匿名管道,通過它進程間可以交換更多有用的數據。 一、 ...