• Linux进程基础


    项目 内容
    这个作业属于那个课程 这里是链接
    作业要求在哪里 这里是链接
    学号-姓名 17041506-张政
    作业学习目标 掌握Linux系统环境C语言编程概念;学习Linux系统进程概念

    1.举例说明静态链接库的创建与使用。

    1.1什么是库

    • 博主想用比较浅显的说法来解释:库就是一堆代码,包含某些代码函数,包含某些算法,将这个代码封装,从而提高编程效率。这是一个很广泛的使用,机器学习领域有很多库,大多是算法的集成,神经网络的集成;图像处理领域里很有名的opencv就是一个开源库,将一个又一个视觉算法包装成API,方便其它程序员调用;不同的编程语言里也有库,Java有Java的库,C+有C+的库,Python有Python的库。在不同的操作系统平台,也有自己的库,Windows有Windows的库,Linux有Linux的库,当然一般库不能通用,这两者的编译器不同。

    1.2Linux中的静态库和动态库

    • 两者的区别在于,静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。而共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。

    1.3静态链接库的创建、使用

    ar -r libbase.a add.o
    ar -r libbase.a sub.o

    • 以上两行就是生成静态库add与sub

    2.举例说明共享库的创建与使用。

    2.1共享库的创建、使用

    • 创建libbase.so的共享库
      gcc -Wall -shared -o libbase.so add.o sub.o

    • 使用(生成可执行文件output)
      gcc -Wall -g -o output main.c ./libbase.so

    3.编程实现一个简单文件复制命令。

    *这里是代码(这里有坑,注意Linux里0和大写的O一样,博主看到错误,人傻)

    • 这里是结果

    4.使用fork创建一个子进程,进程创建成功后父子进程分别输出不同的内容。

    • 代码

    • 结果

    • 输出重定向

    5.使用fork创建多个子进程。

    • 代码

    • 结果

    • 代码(sleep函数)

    • 结果

    6.在 fork 之前以写的方式创建了一个文件 test.txt。然后 fork 出的子进程立即向文件中写入“world”,然后睡眠5秒。而父进程在 fork 后睡眠3秒后向 test.txt 写入 "hello",并关闭描述符。子进程恢复后,又向 test.txt 文件中写入 "lalala"后关闭描述符,结束。

    • 代码

    • 结果

    7.分别在主函数中使用execvp启动ls命令以及使用fork函数产生子进程调用execvp启动ls。

    • 代码

    • 结果

    • 代码

    • 结果

    8.创建5个僵尸进程,并在终端通过ps axf命令查看僵尸进程信息。

    • 代码

    • 结果

    9.通过wait来清理僵尸进程。

    • 代码

    • 结果

    10.父进程通过waitpid函数等待特定子进程结束,若该子进程不结束,父进程一直阻塞。

    • 代码

    • 结果

  • 相关阅读:
    AvalonDock使用体验
    使用vs2015时,拖拉窗口,窗口隐藏后点击显示就会报错,错误代码“已在“VisualTreeChanged”事件期间更改可视化树”。
    es6的常用新特性
    js如何准确获取当前页面url网址信息
    移动端1px细线解决方案总结
    Zepto tap 穿透bug、解决移动端点击穿透问题
    js继承的方式有几种
    js常用的几种模式
    判断对象类型 typeof instanceof Object.prototype.tostring()
    new的实现机制
  • 原文地址:https://www.cnblogs.com/anhui-first-handsome/p/12838776.html
Copyright © 2020-2023  润新知