重定向和静态库/动态库操作

本文介绍了Linux系统中关于重定向的基本操作,并详细讲解了静态库和动态库的使用,特别是如何解决程序找寻动态库依赖的问题,包括将库放在可执行文件同目录、设置LD_LIBRARY_PATH环境变量的方法,以及使用ldd命令检查程序依赖的共享库。
摘要由CSDN通过智能技术生成

重定向和静态库/动态库操作

重定向:

本质: 
    让我们的newfd文件描述符拷贝oldfd文件描述符,然后再关闭newfd, 标准输出拷贝tmpfile 指向新的struct file
标准输入, 标准输出, 标准错误各自所代表的struct file*都指向各自的struct file
现在我们打开一个文件tmpfile, 会自动创建一个struct file* 同样打开一个文件 struct file
将标准输入的内容重定向到我们的tmpfile当中, 让标准输出不要指向原来的struct file, 现在指向tmpfile的struct file, echo后就将内容写到了tmpfile

int dup2(int oldfd, int newfd) 重定向的
   oldfd和newfd都是文件描述符
   oldfd: 需要被拷贝的文件描述符 
   newfd: 需要被更改的文件描述符
将标准输出的内容重定向到tmpfile当中
   fd = 1           fd = 3
1. newfd(标准输出)拷贝oldfd(tmpfile的文件描述符)
2. 关闭(newfd)标准输出
3. 当拷贝成功, 关闭newfd
4. 没有拷贝成功
    4.1 如果拷贝的oldfd是一个无效的文件描述符, 则dup2什么都没有干,      切记: 没有关闭newfd
    4.2 如果拷贝的oldfd是一个有效的文件描述符 但是要拷贝的newfd和oldfd具有相同的值, 则dup2同样什么都不干 也没有关闭newfd

// 将标准输出重定向到我们的tmpfile中去, 其实就是改变当前所保存的struct file地址, 拷贝的是文件描述符 -> 从而改变指向, 
// 让newfd拷贝oldfd , 改变的是newfd
// int dup2(int oldfd, int newfd);
// 前面是old(tmpfile), 后面是new(标准输出) 
// 需要被修改的是标准输出, 模板是tmpfile 

echo "hehe" > tmpfile 是清空 重写 (相当
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值