c语言的dup函数 c语言中各种函数用法

linux下C语言编程,管道,dup,fork,疑问的是,为什么连用那么多close?必须要close? 代码如下

文件描述符0,1,2分别表示标准输入标准输出,标准错误输出, 所以在子进程里close(1)是关闭了标准输出, 然后用dup(fda[1]);此时未用的最小文件描述符就是1(被关闭);这里关闭fda[0]就是为了说明在子进程是管道的写端(fda[0],不关闭是可以的为了保险起见关闭).然后子进程退出会调用系统程序ls,于是当前的文件目录就被发送到管道中.父进程同理, 就是将标准输出作为管道的读端,它读到的是子进程ls后的内容,对文件计数,

成都创新互联公司是一家专业提供华宁企业网站建设,专注与成都网站制作、网站设计、HTML5、小程序制作等业务。10年已为华宁众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

c语言的 dup函数

你可以这样做,但是没有必要。

因为 fd是指向你的打开的文件表项(每个打开的文件都有这么一表项),存在多个fd指向一个表项的情况(如你调用dup2,dup,fcntl),系统采用引用计数的方法,如你有两个fd指向一个文件表现,则计数为2,这样你每次调用close,引用计数减1,减到0是,销毁文件表项以及文件的vnode(inode结构)。即便你不手动关闭文件,进程结束时,系统会自动关闭你打开的文件,所以,试情况而定。有时你可以不必自己close文件。

C语言中dup和dup2函数的不同和使用

首先我们要关闭指定的描述符,假如我们希望将文件描述符fd1复制为fd2,那么我们应该先关闭文件描述符fd2。因为这个描述符很有可能被打开了。接下来就是要暴力的调用dup函数复制描述符fd1,直到返回值等于fd2为止。

c语言运行dup2(socket,1)卡住了是怎么回事

C语言dup2()函数:复制文件描述词

头文件:

?#include unistd.h

定义函数:?int dup2(int odlfd, int newfd);

函数说明:dup2()用来复制参数oldfd 所指的文件描述词, 并将它拷贝至参数newfd 后一块返回. 若参数newfd为一已打开的文件描述词,

则newfd 所指的文件会先被关闭. dup2()所复制的文件描述词, 与原来的文件描述词共享各种文件状态, 详情可参考dup().

返回值:当复制成功时, 则返回最小及尚未使用的文件描述词. 若有错误则返回-1, errno 会存放错误代码.

附加说明:dup2()相当于调用fcntl(oldfd, F_DUPFD, newfd).

错误代码:EBADF 参数fd 非有效的文件描述词, 或该文件已关闭

分享文章:c语言的dup函数 c语言中各种函数用法
标题路径:https://www.cdcxhl.com/article12/doegcgc.html

成都网站建设公司_创新互联,为您提供搜索引擎优化面包屑导航电子商务网站改版自适应网站营销型网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设