linux管道编程(实验4)
linux管道编程
1.实验目的
① 了解与掌握linux操作系统的基本操作
② 了解并掌握管道的工作原理
2.实验平台
操作系统:Linux
3.实验内容和要求
(一)操作实验任务
① 熟悉采用命令ln在文件与目录之间创建链接
② 掌握硬链接和软链接的区别
③ 首先在/opt目录下建立一个文件夹test_ln,然后将/tmp/file_temp/file1.txt 建立硬链接到/opt/test_ln
④ 将/tmp/file_temp/file1.txt 建立软链接到/opt/test_ln
⑤ 阅读附件find文档,测试find命令的多种组合查找文件的方法。
(二)编程实验任务
编写一个程序,建立一个管道。父进程生成两个子进程,p1和p2,两个子进程分别向管道中写入各自的字符串,父进程读出它们。(p1写:child process P1,p2写:child process P2)
实验内容与完成情况:
(一)操作实验任务
① 熟悉采用命令ln在文件与目录之间创建链接
ln 被链接的文件名称 连接的目录名称硬连接直接:ln 而软连接则需要加入参数:ln -s 具体操作看下面的实验
② 掌握硬链接和软链接的区别
硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用。软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件.1.硬链接和原来的文件没有什么区别,而且共享一个 inode 号(文件在文件系统上的唯一标识);而软链接不共享 inode,也可以说是个特殊的 inode,所以和原来的 inode 有区别。2.若原文件删除了,则该软连接则不可以访问,而硬连接则是可以的。
③ 首先在/opt目录下建立一个文件夹test_ln,然后将/tmp/file_temp/file1.txt 建立硬链接到/opt/test_ln
1、在/opt下建立一个文件夹test_ln
root@kali:~# mkdir /opt/test_ln
2、/tmp/file_temp/file1.txt 建立硬链接到/opt/test_ln
root@kali:~# ln tmp/file_temp/file1.txt /opt/test_ln
④ 将/tmp/file_temp/file2.txt 建立软链接到/opt/test_ln
root@kali:~# ln -s tmp/file_temp/file2.txt /opt/test_ln
因为前面已经将file1.txt进行了硬链接,所以再将file1.txt与test_ln进行链接无法成功,只能新建file2.txt进行软链接。
通过ls -li /opt/test_ln可以查看软连接与硬连接的区别
root@kali:~# ls -li /opt/test_ln
⑤ 阅读附件find文档,测试find命令的多种组合查找文件的方法。
1、根据文件名检索
- 查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src
root@kali:~# find /usr -path '*/src/*.txt'
- 查找 /usr 目录下所有文件名以 .txt 结尾的文件
root@kali:~# find /usr -name '*.txt'
- 查找 /usr 目录下所有文件名刚好为 4 个字符的文件
root@kali:~# find /usr -name '????'
2、根据文件类型检索
- 检索 /usr 下所有文件名以 python 开头的目录
root@kali:~# find /usr -type d -name 'python*'
3、检索空文件
- 检索用户主目录下所有的空目录
root@kali:~# find ~ -type d -empty
4、反义匹配
- 检索 /usr 下所有文件名不以 .txt 为后缀的文件
root@kali:~# find /usr -type f ! -name '*.txt'
5、 根据文件大小检索
- 检索文件大小低于1G的文件(±表示大于或者小于)
root@kali:~# find / -size -1G
(二)编程实验任务
编写一个程序,建立一个管道。父进程生成两个子进程,p1和p2,两个子进程分别向管道中写入各自的字符串,父进程读出它们。(p1写:child process P1,p2写:child process P2)
#include <stdio.h>
#include <unistd.h>
#include<unistd.h>
#include<sys/wait.h>
main()
{int i,r,p1,p2,fd[2];char buf[50],s[50];pipe(fd);while((p1=fork())==-1);if(p1==0){lockf(fd[1],1,0);sprintf(buf,"child process P1 is sending messages! \n");printf("child process P1! \n");write(fd[1],buf,50);sleep(5);lockf(fd[1],0,0);exit(0);}else{while((p2=fork())==-1);if(p2==0){lockf(fd[1],1,0);sprintf(buf,"child process P2 is sending messages! \n");printf("child process P2! \n");write(fd[1],buf,50);sleep(5);lockf(fd[1],0,0);exit(0);}}wait(0);if((r=read(fd[0],s,50))==-1)printf("can't read pipe\n");elseprintf("%s\n",s);wait(0);if((r=read(fd[0],s,50))==-1)printf("can't read pipe\n");elseprintf("%s\n",s);exit(0);
}
linux管道编程(实验4)相关推荐
- 实验六 Linux进程编程,Linux系统编程实验六:进程间通信
<Linux系统编程实验六:进程间通信>由会员分享,可在线阅读,更多相关<Linux系统编程实验六:进程间通信(10页珍藏版)>请在人人文库网上搜索. 1.实验六:进程间通信l ...
- linux高级编程实验
目录 文件管理(一) 文件管理(二) 文件管理(三) 文件管理(四) 文件管理(五) 文件管理(六) 进程(一) 进程(二) 进程(三) 进程(四) 进程(五) 管道(一) 管道(二) 管道(三) 进 ...
- Linux高级编程实验(30个)
文章目录 1)输出Linux下的c也不是太难嘛!在linux下编辑,编译,运行 2)编写一个简单地c语言程序,根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件. 3)编写 ...
- Linux管道编程实例
/*管道可以把管道想象为两个实体之间的单向连接器.注意,管道是半双工的,如果需要全双工通讯,应该转而考虑套接字.匿名管道又称管道,提供了一个进程与它的兄弟进程通讯的方法,只存在于父进程中:命名管道,可 ...
- linux信号处理编程实验报告,Linux编程之信号处理
信号是类Unix系统中的一种通知机制.在Linux下,我们可以通过kill -l命令来查看有哪些信号.Linux下有64个信号,其中前32个信号是经典信号,后32个是用于驱动开发要用到的. 那么信号是 ...
- Linux 多线程编程实验知识整理
1 Introduction 不用介绍了吧- 2 Thread Concepts 1. Thread由下面部分组成: a. Thread ID b. Stack c. ...
- Linux Socket 编程实验
目录 实验内容 代码实现 实验结果 实验内容 编写两个程序,一个Server,一个Client,分别运行在两个shell窗口,通过Socket实现两个Shell窗口的即时通信: 即在A窗口输入Hell ...
- linux多线程编程实验报告,Linux多线程编程
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 使用pthread_create函数创建线程.1 2 3 4 5 6 7 8int (pthread_t *__rest ...
- linux c编程项目实例,Linux c编程实例_例子
例一:字符与整型变量的实现 #include int main() { int c1,c2; char c3; c1='a'-'A'; c2='b'-'B'; c3='c'-; printf(&quo ...
最新文章
- 跟着老王学python
- cover letter 和response letter的写法
- 如何优雅地辞退互联网企业的老员工?
- 【若依(ruoyi)】字典管理
- MySQL找出锁等待
- linux之od命令总结
- 达梦数据库卡慢简单分析
- java第三课,流程控制语句
- git clone报错:Permission denied (publickey). fatal: Could not read from remote repository...
- python从url获取pdf文件并保存在本地
- 辅助函数 php,php的辅助函数功能
- GJB 8114编码标准检查软件产品简介
- 国开计算机网络作业,国家开放大学 计算机网络 形考作业1 答案
- 剑指offer系列——剑指 Offer 55 - I. 二叉树的深度
- mysql explain 性能分析_MySQL性能分析(Explain)
- maya中英文对照_maya2011中英文对照表
- 为员工 尚德机构建教育圈最大期权池
- 2.2.7Python-异常处理
- dwz中jqGrid的主题变更
- 视频教程-沐风老师3DMAX基础入门-3Dmax
热门文章
- java getparameter 乱码,request.getParameter()取值乱码解决办法
- 电路设计中上拉电阻与下拉电阻的作用
- 记录用bazel编译tensorflow源码
- 正弦波输出变压变频电源系统DSP(http://huarm.taobao.com/ )
- Axure学习笔记(十五)-类似于某宝商品界面的实现(利用中继器)
- 出海困局 | 国内增长出现瓶颈,大厂的出海“野心”也藏不住了!
- 3个5相乘列乘法算式_你还在背乘法口诀吗?
- nginx软重启nginx平滑重启
- pecs_Java 泛型: 什么是PECS - 穿梭于偶然
- idea引入在线jquery后无效,并且没有语法显示(已解决)