【Educoder作业】操作系统之进程管理(一)

【Educoder作业】操作系统之进程管理(一)

这鬼实训全是坑

T1 显示进程信息

这个题本意是教我们一些进程的基本操作,但是由于描述的实在太烂了导致我们会遇到各种各样的问题。
首先,如果我们的进程信息用 l i s t list list a p p e n d append append,也就是列表来搞的话,会遇到一个很奇怪的问题:
T y p e E r r o r : u n h a s h a b l e t y p e : ′ l i s t ′ TypeError: unhashable type: 'list' TypeError:unhashabletype:list
这是因为,他的判断程序的逻辑是,把我们生成的进程集进行哈希比较,如果我们进程集里面的进程用的还是列表,列表是不能哈希的,所以会报错。
也就是说我们需要用元组的方式把他存起来,元组是可哈希的。

import psutil

def get_proc_by_name(pname):
    procs = []
    for proc in psutil.process_iter():
        try:
            # 请在此添加代码,补全函数get_proc_by_name
            #-----------Begin----------
            # proc是一个进程
            if pname in proc.name() :
                procs.append(proc)
            #------------End-----------
        except psutil.AccessDenied:
            pass
        except psutil.NoSuchProcess:
            pass
    return procs
    
def get_procs_info(procs):
    procsinfo = []
    f = open('myresult.txt','w')
    for p in procs:
        procinfo = []
        with p.oneshot():
            f.write(str(p.pid)+'\n')
            # 请在此添加代码,补全函数get_procs_info
            #-----------Begin----------
            #需要将相关信息写入到文件myresult.txt当中,使用write(),注意要将进程信息转化成字符串才能输入到文件中,使用str()转化
            procinfo = (p.pid, p.name(), p.cpu_times(), p.exe(), p.status(), p.cwd())
            #------------End-----------
        procsinfo.append(procinfo)
    f.close()
    return procsinfo

T2 创建展示某个进程的信息

这个就更扯了,他的答案是固定的。
意思就是说,在实际情况将,每一个进程虽然是用同样的方式运行同样的程序,但是由于 c p u cpu cpu啥的各种原因,其余所有信息都不变但是 i d id id这个是会变得。这个实训就不变…,这是第一个坑。
第二个坑,由于上面的问题,检测程序的逻辑是,先运行我们的程序,然后运行一个标答,标答是检测你有没有运行题目里要求的进程,同时返回一个进程。问题来了,如果我们在自己的程序里把进程终止了,比如你写了 p r o c . t e r m i n a t e ( ) proc.terminate() proc.terminate(),那就完了。因为标答是检测我们是否运行了指定程序,而我们关闭了之后他就检测不到了…
多的不讲,看代码吧,我花 3000 3000 3000金币买的

from subprocess import Popen
from psutil import *

def creatProcess():
    # 请在此添加代码,补全函数creatProcess
    #-----------Begin----------
    popen = Popen(['python', 'test.py'])
    proc = Process(popen.pid)
    with proc.oneshot() :
        procinfo = (proc.pid, proc.name(), proc.exe(), proc.cwd())
    #------------End-----------
    return procinfo

T3 启动并终止进程

这个题就更更扯了。他在主函数里写的是 w h i l e while while????,也就是说最后无论如何都是成功。我们直接 p r i n e ( ′ 成 功 ′ ) prine('成功') prine()即可。
正常做法就是第二题的整合,看一眼第二题的标答程序就理解 c m d l i n e cmdline cmdline的用法了。
顺便说一下代码里的 f o r . . e l s e for..else for..else结构。这个是 P y t h o n Python Python独有的,他的意义是如果 f o r for for是完整循环下来的,就运行 e l s e else else。比如这个题里,如果能完整循环下来就只可能是不断 p a s s pass pass下来,也就是没有我们要的进程,那就会进到 e l s e else else里。

import psutil
from subprocess import Popen

def startOrkillProc():
    for process in psutil.process_iter():
        try:
            # 请在此添加代码,补全函数startOrkillProc
            #-----------Begin----------
            if process.cmdline() == ['python', 'test.py'] :
                process.terminate()

            #------------End-----------
                return 'Process found. Terminating it.'
        except:
            pass
    else:
        # 请在此添加代码,补全函数startOrkillProc
        #-----------Begin----------
        proc = psutil.Process(Popen(['python', 'test.py']).pid)

        #------------End-----------
        return 'Process not found: starting it.'

if __name__=="__main__":
    OK = False
    while True:
        if startOrkillProc()=="Process found. Terminating it.":
            OK = True
            print("成功")
            break
    if not OK:
        print('失败')
  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: educoder操作系统之文件管理是指操作系统对文件的创建、读取、写入、删除等操作的管理。文件是计算机中存储数据的一种方式,操作系统需要对文件进行管理,以便用户能够方便地访问和使用文件。文件管理涉及到文件的组织、存储、保护和共享等方面,是操作系统中重要的功能之一。在educoder操作系统中,学习者可以学习到文件系统的基本概念、文件的组织方式、文件的存储管理、文件的保护和共享等知识,从而掌握操作系统中文件管理的基本原理和方法。 ### 回答2: educoder操作系统之文件管理一,主要是讲授操作系统中文件管理的基础知识和原理。文件管理操作系统中最基本的功能之一,主要涉及文件的创建、修改、删除和查询等操作。在操作系统中,每个文件都有自己的名称、大小、属性和存储位置等信息,在文件管理中,需要通过文件系统来管理这些信息。 文件系统是一个重要的概念,是操作系统管理文件的底层实现。在文件系统中,每个文件都有相应的存储位置,可以通过文件路径和文件名来访问文件。文件系统的组织方式有很多种,常见的有单级目录、多级目录和索引节点等方式。 文件的创建、修改和删除是文件管理中最基础的操作。在创建文件时,需要给文件指定名称、类型、大小和存储位置等信息。而对于修改文件和删除文件,则需要找到相应的文件,进行相应的修改和删除操作。在文件管理中,可以通过命令行或文件管理器等方式来进行操作。 文件的查询是文件管理中常见的操作之一,可以通过文件名、文件类型、文件大小等属性来查询文件。查询操作可以提高文件的查找效率和准确率,避免了手动查找文件的麻烦。在操作系统中,有很多工具和命令可以用来查询文件,如ls、find、grep等命令。 在文件管理中,还需要注文件安全和权限管理等问题。文件安全涉及到文件的保密性、完整性和可用性等方面,需要通过访问控制、加密等方式来实现。而文件的权限管理则涉及到文件的所有者、读写权限等方面,可以通过chmod、chown等命令来进行设置和修改。 总体而言,educoder操作系统之文件管理一主要介绍了文件管理的基本原理和常见操作,是操作系统学习中重要的一部分。在实际的操作系统开发管理中,需要灵活运用文件管理的各种功能,满足不同用户和应用的需求。 ### 回答3: educoder操作系统之文件管理一是一门操作系统文件管理的课程。在这门课程中,主要介绍了文件和文件系统的基本概念,文件的分类和操作以及文件存储管理等相的知识点。 首先,该课程简单介绍了文件的概念,包括了文件的定义、属性和存储方式等基础知识。然后,课程对文件的分类进行了详细的讲解,包括文本文件、二进制文件和特殊文件等。其次,该课程还介绍了文件的操作,涉及到文件的打开、读取、写入、闭等基本操作。此外,还讲解了文件指针的概念和使用方法。 接着,该课程开始引入文件系统的概念,简单介绍了文件系统的作用和一些常见的文件系统类型。此外,还介绍了目录和路径的概念和使用方法。然后,课程继续介绍了文件存储管理的相知识,包括文件的物理存储结构和磁盘空间管理等。 最后,该课程还对一些常见的文件管理问题进行了详细的讲解,如文件的权限和保护、文件的备份与恢复等等。这些问题对于系统管理员和文件管理人员都非常重要,可以帮助他们更加高效地管理文件。 总的来说,educoder操作系统之文件管理一是一门非常实用的课程,包含了操作系统文件管理的基本知识和一些实践方法,可以帮助学生深入了解文件管理的相知识,为日后的操作系统学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值