zoukankan      html  css  js  c++  java
  • 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函数等待特定子进程结束,若该子进程不结束,父进程一直阻塞。

    • 代码

    • 结果

  • 相关阅读:
    C# 文件类的操作---删除
    C#实现Zip压缩解压实例
    UVALIVE 2431 Binary Stirling Numbers
    UVA 10570 meeting with aliens
    UVA 306 Cipher
    UVA 10994 Simple Addition
    UVA 696 How Many Knights
    UVA 10205 Stack 'em Up
    UVA 11125 Arrange Some Marbles
    UVA 10912 Simple Minded Hashing
  • 原文地址:https://www.cnblogs.com/anhui-first-handsome/p/12838776.html
Copyright © 2011-2022 走看看