一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

代码运行方法、装置、电子设备、存储介质和程序产品与流程

2021-12-04 02:12:00 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体涉及代码运行方法、装置、电子设备、存储介质和程序产品。


背景技术:

2.随着编程教育的快速发展,越来越多的人开始学习编程技能。比如,学校的信息技术老师或者学生家长可以在学生使用的设备上自主布置编程环境,或者,安装已有的编程教育软件以供学生进行编程学习。
3.采用自主布置编程环境或者使用已有的编程教育软件的方案,由于用户自身编程能力限制或者部分用户的恶意心态,可能会编写出对于代码运行进程所在系统具有破坏性的代码,妨害系统的正常运行。


技术实现要素:

4.本发明实施例提供代码运行方法、装置、电子设备、存储介质和程序产品,可以避免用户编写的具有破坏性的代码对代码运行进程所在的系统或设备造成破坏,提升了代码运行环境的安全性。
5.本发明实施例提供一种代码运行方法,包括:获取目标用户的代码运行请求,所述代码运行请求包括所述目标用户的用户标识;根据所述用户标识,从代码运行系统的代码存储目录中,确定所述目标用户对应的目标代码存储目录,其中,所述代码存储目录与所述代码运行系统的用户之间一一对应,所述代码存储目录用于存储对应用户的代码文件;将所述目标代码存储目录下的目标代码文件,挂载到所述目标用户对应的目标运行目录下,其中,所述代码运行系统中的运行目录与用户之间一一对应,所述运行目录用于挂载对应用户在运行代码时所需的所有文件;基于所述目标代码文件,将共享目录下的目标运行环境文件挂载到所述目标运行目录下,其中,所述共享目录用于存储由所述代码运行系统的用户共享的运行环境文件,所述目标运行目录下挂载的所述目标运行环境文件以及所述目标代码文件中不存在文件标识相同的文件;基于所述目标运行目录下挂载的目标运行环境文件,运行所述目标运行目录下挂载的所述目标代码文件。
6.相应的,本发明实施例还提供一种代码运行装置,包括:请求获取单元,用于获取目标用户的代码运行请求,所述代码运行请求包括所述目标用户的用户标识;目录确定单元,用于根据所述用户标识,从代码运行系统的代码存储目录中,确定所述目标用户对应的目标代码存储目录,其中,所述代码存储目录与所述代码运行系统的
用户之间一一对应,所述代码存储目录用于存储对应用户的代码文件;第一挂载单元,用于将所述目标代码存储目录下的目标代码文件,挂载到所述目标用户对应的目标运行目录下,其中,所述代码运行系统中的运行目录与用户之间一一对应,所述运行目录用于挂载对应用户在运行代码时所需的所有文件;第二挂载单元,用于基于所述目标代码文件,将共享目录下的目标运行环境文件挂载到所述目标运行目录下,其中,所述共享目录用于存储由所述代码运行系统的用户共享的运行环境文件,所述目标运行目录下挂载的所述目标运行环境文件以及所述目标代码文件中不存在文件标识相同的文件;代码运行单元,用于基于所述目标运行目录下挂载的目标运行环境文件,运行所述目标运行目录下挂载的所述目标代码文件。
7.可选的,所述第二挂载单元用于获取各所述目标代码文件的目标代码文件标识,以及共享目录下各运行环境文件的运行环境文件标识;确定运行环境文件标识与所有目标代码文件标识均不相同的目标运行环境文件;将所述目标运行环境文件挂载到所述目标运行目录下。
8.可选的,所述目标代码存储目录、所述目标运行目录和所述共享目录之间存在目录层级关系,所述共享目录层级最低,所述目标运行目录层级最高;所述第一挂载单元,用于获取所述目标用户对应的目标运行目录下的已挂载文件的文件标识;当所述已挂载文件中存在第一同标识文件时,确定所述第一同标识文件的来源目录层级,所述第一同标识文件的文件标识与所述目标代码文件中一文件的文件标识相同;当所述来源目录层级低于所述目标代码存储目录的目录层级时,将所述目标代码存储目录下的目标代码文件挂载到所述目标运行目录,以及,基于所述目标代码文件覆盖所述第一同标识文件;所述第二挂载单元,用于获取所述目标运行目录下的已挂载文件的文件标识;当所述已挂载文件中存在第二同标识文件时,确定所述第二同标识文件的来源目录层级,所述第二同标识文件的文件标识与所述共享目录下一运行环境文件的文件标识相同;当所述来源目录层级高于所述共享目录的目录层级时,从所述运行环境文件中确定与所述第二同标识文件的文件标识不同的目标运行环境文件;将所述目标运行环境文件挂载到所述目标运行目录。
9.可选的,本发明实施例提供的代码运行装置还包括内容更新单元,用于监测所述目标用户的用户设备中预设目录下的文件更新情况,所述预设目录为所述用户设备中本地存储代码文件的目录;若所述预设目录下与所述目标代码文件对应的本地代码文件发生更新,读取所述本地代码文件的更新内容;根据所述本地代码文件的更新内容,对所述目标代码文件的文件内容进行更新,得到新的目标代码文件。
10.可选的,本发明实施例提供的代码运行装置还包括空间隔离单元,用于创建所述目标用户对应的命名空间;
在所述目标用户对应的命名空间中创建所述目标代码存储目录和所述目标运行目录;对应的,所述代码运行单元用于在所述目标用户对应的命名空间中,基于所述目标运行目录下挂载的目标运行环境文件,配置所述目标代码文件运行所需的代码运行环境;根据所述代码运行环境,运行所述目标运行目录下挂载的所述目标代码文件。
11.可选的,本发明实施例提供的代码运行装置还包括目录创建单元,用于在所述代码运行系统的根目录下建立伪根目录作为所述共享目录,在所述共享目录存储所述运行环境文件;创建所述共享目录的上级目录作为所述目标用户的所述目标代码存储目录;创建所述代码存储目录的上级目录作为所述目标用户的目标运行目录。
12.可选的,本发明实施例提供的代码运行装置还包括目录访问单元,用于获取所述目标用户的根目录访问请求,所述根目录访问请求包括目标用户的用户标识;根据所述目标用户的用户标识,判断所述目标用户是否满足预设的根目录访问条件;当所述目标用户不满足所述根目录访问条件时,访问所述共享目录。
13.可选的,所述目录访问单元用于当所述目标用户不满足所述根目录访问条件时,调用目录切换命令;基于所述目录切换命令,将当前访问的目录从所述根目录切换为所述共享目录;访问所述共享目录。
14.可选的,本发明实施例提供的代码运行装置还包括系统退出单元,用于响应于所述目标用户的系统退出操作,将所述目标代码文件对应于所述目标用户存储到数据库中;删除所述目标代码存储目录和所述目标运行目录。
15.可选的,本发明实施例提供的代码运行装置还包括文件获取单元,用于获取所述目标用户的代码获取请求,所述代码获取请求包括所述目标用户的用户标识;根据所述目标用户的用户标识,从所述数据库中获取所述目标用户对应的所述目标代码文件;将所述目标代码文件存储到预先创建的所述目标代码存储目录下。
16.相应的,本发明实施例还提供一种电子设备,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行本发明实施例所提供的任一种代码运行方法中的步骤。
17.相应的,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种代码运行方法中的步骤。
18.此外,本发明实施例还提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本发明实施例所提供的任一种代码运行方法中的步骤。
19.采用本发明实施例的方案,可以获取目标用户的代码运行请求,该代码运行请求包括该目标用户的用户标识,根据该用户标识,从代码运行系统的代码存储目录中,确定该
目标用户对应的目标代码存储目录,其中,该代码存储目录与该代码运行系统的用户之间一一对应,该代码存储目录用于存储对应用户的代码文件,将该目标代码存储目录下的目标代码文件,挂载到该目标用户对应的目标运行目录下,其中,该代码运行系统中的运行目录与用户之间一一对应,该运行目录用于挂载对应用户在运行代码时所需的所有文件,基于该目标代码文件,将共享目录下的目标运行环境文件挂载到该目标运行目录下,其中,该共享目录用于存储由该代码运行系统的用户共享的运行环境文件,该目标运行目录下挂载的该目标运行环境文件以及该目标代码文件中不存在文件标识相同的文件,基于该目标运行目录下挂载的目标运行环境文件,运行该目标运行目录下挂载的该目标代码文件;由于本发明实施例中将用户编辑的代码作为目标代码文件存储在目标代码存储目录中,运行代码所需的运行环境文件存储在共享目录中,在挂载时将目标代码文件和与目标代码文件不存在相同文件标识的目标运行环境文件挂载到目标运行目录下,因此,用户即使恶意修改运行环境文件,被恶意修改的运行环境文件会作为目标代码文件存储在目标代码存储目录中,不会对共享目录下的原始的运行环境文件产生影响,可以避免用户编写的具有破坏性的代码对代码运行进程所在的系统或设备造成破坏,提升了代码运行环境的安全性。
附图说明
20.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是本发明实施例提供的代码运行方法的场景示意图;图2是本发明实施例提供的代码运行方法的流程图;图3是本发明实施例提供的将目标代码文件和目标运行环境文件挂载到目标运行目录的过程示意图;图4是本发明实施例提供的在根目录下建立伪根目录后代码运行系统的目录结构示意图;图5是本发明实施例提供的代码运行系统的结构示意图;图6是本发明实施例提供的代码运行方法的另一流程示意图;图7是本发明实施例提供的代码运行装置的结构示意图;图8是本发明实施例提供的代码运行装置的另一结构示意图;图9是本发明实施例提供的电子设备的结构示意图。
具体实施方式
22.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.本发明实施例提供一种代码运行方法、装置、电子设备和计算机可读存储介质。具体地,本发明实施例提供适用于代码运行装置的代码运行方法,该代码运行装置可以集成
在电子设备中。
24.该电子设备可以为终端等设备,包括但不限于移动终端和固定终端,例如移动终端包括但不限于智能手机、智能音箱、智能手表、平板电脑、笔记本电脑、车载终端等,其中,固定终端包括但不限于台式电脑、智能电视等。
25.该电子设备还可以为服务器等设备,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
26.本发明实施例的代码运行方法,可以由服务器或终端实现,也可以由终端和服务器共同实现。
27.下面以终端和服务器共同实现该代码运行方法为例,对该方法进行说明。
28.如图1所示,本发明实施例提供的代码运行系统包括终端10和服务器20等;终端10与服务器20之间通过网络连接,比如,通过有线或无线网络连接等,其中,终端10可以作为目标用户向服务器20发送待分析的客户数据的终端存在。
29.其中,终端10可以为目标用户编辑以及生成代码文件的终端,也可以用于向服务器20发送代码运行请求。
30.服务器20,可以用于获取目标用户的代码运行请求,代码运行请求包括目标用户的用户标识;服务器20可以根据用户标识,从代码运行系统的代码存储目录中,确定目标用户对应的目标代码存储目录,其中,代码存储目录与代码运行系统的用户之间一一对应,代码存储目录用于存储对应用户的代码文件;服务器20将目标代码存储目录下的目标代码文件,挂载到目标用户对应的目标运行目录下,其中,代码运行系统中的运行目录与用户之间一一对应,运行目录用于挂载对应用户在运行代码时所需的所有文件;服务器20基于目标代码文件,将共享目录下的目标运行环境文件挂载到目标运行目录下,其中,共享目录用于存储由代码运行系统的用户共享的运行环境文件,目标运行目录下挂载的目标运行环境文件以及目标代码文件中不存在文件标识相同的文件;服务器20基于目标运行目录下挂载的目标运行环境文件,运行目标运行目录下挂载的目标代码文件。
31.在一些可选的实施例中,服务器20可以将目标代码文件的运行结果返回给终端10,以使得终端10可以对目标代码文件的运行结果进行显示。
32.以下分别进行详细说明。需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
33.本发明实施例将从代码运行装置的角度进行描述,该代码运行装置具体可以集成在服务器和/或终端中。
34.如图2所示,本实施例的代码运行方法的具体流程可以如下:201、获取目标用户的代码运行请求,代码运行请求包括目标用户的用户标识。
35.其中,目标用户为当前正在使用代码运行系统的用户。目标用户可以有一个,也可
以有多个,代码运行系统可以通过多线程并发处理等技术,为多个目标用户同时提供运行代码等服务。
36.在实际应用过程中,代码运行系统中可以多个使用者建立的用户账号,例如,在某一时间,可以有一部分正在使用代码运行系统的用户,可以将这部分正在使用代码运行系统的用户都作为目标用户。
37.其中,代码运行请求可以是根据目标用户的触发操作而生成的运行某个或某些代码文件的请求。代码运行请求中可以包括但不限于目标用户的用户标识、需要运行的代码文件的指示信息和/或目标用户指定的在运行代码时需要的运行资源信息,等等。
38.比如,在编程学习过程中,代码运行系统可以供学习编程的学生运行编写出的代码,此时,代码运行请求中可以包括学生所登录的用户账号对应的用户标识、学生所编写出的代码文件的存储地址等。
39.再比如,为了提升学生的编程学习兴趣,可以通过游戏的形式对学生进行编程训练。例如游戏形式可以是,由学生在使用的终端界面上选择某一句编程语句,以运行该编程语句对应的游戏代码文件,实现游戏效果。此时,代码运行请求中可以包括但不限于学生所选择的编程语句对应的游戏代码文件的指示信息,等等。
40.可选的,目标用户的用户标识可以是任意的能够指示目标用户身份的信息,例如,目标用户的用户标识可以是目标用户的账号号码或者可以将目标用户与其他用户进行区分的字符组合,等等。本发明实施例对用户标识的形式和内容不作限定。
41.具体的,目标用户的触发操作可以是对代码运行系统的用户可视界面上代码运行控件的点击等操作,或者,也可以是目标用户手动输入代码运行命令,或者,还可以是用户或者技术人员预先设置的定时或不定时的代码运行设置,等。
42.在实际应用过程中,由于可为用户提供代码运行服务的服务资源是有限的,因此,为了给每个用户都能够提供足够的计算资源,避免资源的空闲,每次用户在结束对代码运行系统的使用后,可以对该用户的计算资源进行回收并释放。但是这会导致用户在代码运行系统中所作的变动例如编写的代码文件都会消失。
43.因此,可以对目标用户在设备上编辑的内容进行存储,对用户的变动做持久化工作,保存到数据库中。也就是说,步骤“获取目标用户的代码运行请求”之前,本发明实施例提供的代码运行方法还可以包括:监测目标用户的用户设备中预设目录下的文件更新情况,预设目录为用户设备中本地存储代码文件的目录;若预设目录下与目标代码文件对应的本地代码文件发生更新,读取本地代码文件的更新内容;根据本地代码文件的更新内容,对目标代码文件的文件内容进行更新,得到新的目标代码文件。
44.其中,文件更新情况可以包括但不限于文件中内容的修改、增加、删除以及对本地代码文件的删除等情况。
45.具体的,步骤“根据本地代码文件的更新内容,对目标代码文件的文件内容进行更新”,具体可以包括:获取本地代码文件的文件标识以及目标代码文件的文件标识;
当本地代码的文件标识与目标代码的文件标识匹配时,根据本地代码文件的更新内容,对目标代码文件的文件内容进行更新。
46.其中,文件标识可以是文件名、文件编号等等。
47.可以理解的是,对目标代码文件的文件内容所进行的更新操作,一般是与目标用户对本地代码文件的更新操作是一致的。例如,目标用户在本地代码文件中的某个位置写入了一段代码,则对目标代码文件的文件内容进行更新时,一般也是在目标代码文件的相同位置写入相同内容。
48.在一些可选的实施例中,为了提升目标代码文件的可读性,增加目标代码文件中的信息量,在对目标代码文件进行更新时,除了将本地代码文件的更新内容进行同步之外,还可以在目标代码文件中添加更新相关信息。也就是说,步骤根据本地代码文件的更新内容,对目标代码文件的文件内容进行更新,得到新的目标代码文件的步骤,可以包括:根据本地代码文件的更新内容,对目标代码文件的文件内容进行相同的更新;基于对目标代码文件的文件内容的更新,在目标代码文件中添加更新相关信息,得到新的目标代码文件。
49.其中,更新相关信息可以包括但不限于目标用户在本地代码文件中进行更新的时间、目标代码文件的文件内容进行更新的时间、目标代码文件中被更新的内容等等。
50.可以理解的是,为了不影响目标代码文件的正常运行,更新相关信息可以采用代码注释的形式写在目标代码文件中。
51.在一些具体的实施例中,为了确保代码运行系统的各用户之间互不影响,步骤“获取目标用户的代码运行请求”之前,本发明实施例提供的代码运行方法还可以包括:创建目标用户对应的命名空间;在目标用户对应的命名空间中创建目标代码存储目录和目标运行目录;对应的,步骤“基于目标运行目录下挂载的目标运行环境文件,运行目标运行目录下挂载的目标代码文件”,可以包括:在目标用户对应的命名空间中,基于目标运行目录下挂载的目标运行环境文件,配置目标代码文件运行所需的代码运行环境;根据代码运行环境,运行目标运行目录下挂载的目标代码文件。
52.其中,命名空间(namespaces)又称为名字空间,可以将代码运行系统的部分系统资源进行隔离,让处于不同命名空间的进程不能互相看见彼此使用的资源。
53.例如在linux系统中,linux命名空间(linux namesapce)是linux内核对系统资源进行隔离和虚拟化的特性,这些系统资源包括进程id、主机名、用户id、网络访问和进程间通讯等。
54.linux系统支持多种类型的命令,比如clone_newns命令可以隔离挂载点信息,clone_newuts命令可以隔离主机名,clone_newipc命令可以隔离进程间通信,clone_newpid命令可以隔离进程id,以使得不同pid命名空间的进程可以重复,互不影响,看不到其他命名空间的进程,clone_newnet命令可以隔离网络。
55.可以将一个命名空间理解为一个虚拟机,用户在一个命名空间上的所有操作,不会影响到其他命名空间。
56.202、根据用户标识,从代码运行系统的代码存储目录中,确定目标用户对应的目
标代码存储目录。
57.其中,代码存储目录与代码运行系统的用户之间一一对应,代码存储目录用于存储对应用户的代码文件。
58.可以理解的是,代码存储目录与代码运行系统的用户之间一一对应,指的是,每个代码存储目录都与唯一的一个用户对应,每个用户也只对应有一个代码存储目录目录。例如,代码存储目录a只与用户a相互对应。
59.其中,代码文件是指包含了具体代码的文件,代码文件的格式可以是.py、.cpp、.html等等。代码存储目录中可以只存储有一个代码文件,也可以存储有两个及两个以上的代码文件。
60.其中,代码文件可以是由目标用户自行编写的代码得到,也可以是技术人员为目标用户预先设置或生成的代码得到。
61.例如,在一般的编程场景下,比如程序开发过程或者编程学习过程中,代码文件可以由目标用户根据自身的编程需求编写出的代码构成的文件。
62.再例如,在某些应用程序的使用场景下,比如游戏程序运行场景下,代码文件可以是由游戏应用程序根据目标用户的操作设置出的代码构成。比如,目标用户可以在使用游戏应用程序时,自行创建或者调整游戏人物和/或游戏场景等等,此时,游戏应用程序可以根据目标用户的创建或调整操作,生成与目标用户对应的游戏代码文件,以实现目标用户所需的游戏效果。
63.当目标用户运行游戏应用程序时,游戏应用程序对应的代码运行系统,可以调用该目标用户对应的游戏代码文件,在游戏界面中显示目标用户创建或调整的游戏人物、游戏场景,等等。
64.其中,代码运行系统指的是能实现代码运行功能的实体。代码运行系统可以是在一个用户的个人电子设备上构建的,也可以通过连接多个用户的个人电子设备构建的。
65.比如,在用户个人终端中部署的可以实现本发明实施例功能的系统就可以认为是本发明实施例中的代码运行系统,或者,连接了多个用户的个人终端并通过云端服务器进行代码运行的系统也可以认为是本发明实施例中的代码运行系统。
66.具体的,目标代码存储目录即为代码存储目录中与目标用户对应的一个代码存储目录。
67.203、将目标代码存储目录下的目标代码文件,挂载到目标用户对应的目标运行目录下。
68.其中,代码运行系统中的运行目录与用户之间一一对应,运行目录用于挂载对应用户在运行代码时所需的所有文件。
69.可以理解的是,运行目录与代码运行系统的用户之间一一对应,指的是,每个运行目录都与唯一的一个用户对应,每个用户也只对应有一个运行目录。例如,运行目录b只与用户b相互对应。
70.其中,所需的所有文件至少包括目标代码文件和目标运行环境文件。
71.具体的,目标运行目录即为代码运行系统的运行目录中与目标用户对应的一个运行目录。
72.挂载,是指由操作系统使一个存储设备(诸如硬盘、cd

rom或共享资源)上的计算
机文件和目录可供用户通过计算机的文件系统访问的一个过程。通过挂载,可以使原本的目录(例如目标代码存储目录和共享目录)中的文件被隐藏。
73.在一些可选的实施例中,在将目标代码存储目录下的目标代码文件,挂载到目标用户对应的目标运行目录下时,可以只挂载用户指定的目标代码文件。或者,目标代码存储目录下除了目标代码文件外也还可以有其他的代码文件,在挂载时,可以将目标代码存储目录下的全部代码文件挂载到目标用户对应的目标运行目录下,全部代码文件中包括目标代码文件。
74.在另一些可选的实施例中,可以设置各类目录之间的层级关系,根据层级关系确定在挂载时的具体操作。如图3所示,目标代码存储目录、目标运行目录和共享目录之间存在目录层级关系,其中,共享目录层级最低,目标运行目录层级最高。
75.具体的,目录层级关系指的是不同目录之间的层次关系。这种层次关系可以是根据不同目录在目录结构中对应的位置得到的,但是,这种层次关系并不是指目录之间一定存在父目录和子目录之间的在结构上的层次关系,也可以是由技术人员进行指定得到的。
76.例如,目标运行目录和目标代码存储目录都可以是目录结构中临时创建的目录,目标运行目录的路径可以为“/path/sessionid/merged”,目标代码存储目录的路径可以为“/path/sessionid/upper”,共享目录的路径可以为“/data/system”。
77.此时,目标运行目录、目标代码存储目录以及共享目录之间并不是父目录和子目录的关系。可以由技术人员指定目标运行目录层级高于目标代码存储目录,目标代码存储目录层级高于共享目录。
78.或者,目标运行目录的路径可以为“/data/system/upper/merged”,目标代码存储目录的路径可以为“/data/system/upper”,共享目录的路径可以为“/data/system”。
79.此时,目标运行目录、目标代码存储目录以及共享目录之间具有父目录和子目录的关系。共享目录为目标代码存储目录的父目录,目标代码存储目录为目标运行目录的父目录,默认子目录的层级高于父目录,目录层级关系是根据不同目录在目录结构中对应的位置得到的。
80.例如,在挂载时的具体操作可以是,将在目录层级中不是最高目录层级的目录中的文件挂载到目录层级最高的目录中,在挂载时目录层级较低的目录中的文件会被目录层级较高的目录中的文件覆盖。
81.在本发明实施例中步骤203和步骤204的执行顺序不限,可以先执行步骤203再执行步骤204,或者,先执行步骤204再执行步骤203,也可以步骤203和步骤204同时执行。
82.例如,如果先执行步骤204,将共享目录中的运行环境文件挂载到了目标运行目录中,此时,在执行步骤203时,可以:获取目标用户对应的目标运行目录下的已挂载文件的文件标识;当已挂载文件中存在第一同标识文件时,确定第一同标识文件的来源目录层级,第一同标识文件的文件标识与目标代码文件中一文件的文件标识相同;当来源目录层级低于目标代码存储目录的目录层级时,将目标代码存储目录下的目标代码文件挂载到目标运行目录,以及,基于目标代码文件覆盖第一同标识文件。
83.其中,来源目录层级指的是第一同标识文件的来源目录的层级,来源目录即为对哪一个目录中的文件进行挂载可以得到第一同标识文件的目录。例如,第一同标识文件是
通过对共享目录中的文件挂载得到的,共享目录即为来源目录,共享目录在目录层级关系中的层级即为来源目录层级。
84.也就是说,在先执行步骤204再执行步骤203的场景下,可以先将共享目录中的所有运行环境文件挂载到目标运行目录中,再执行步骤203。在执行步骤203时,如果已经挂载到目标运行目录的运行环境文件中,存在某个或者某些运行环境文件的文件标识与某个或者某些目标代码文件的文件标识相同,则这些运行环境文件即为第一同标识文件。
85.此时,可以在挂载目标代码文件时,直接通过与第一同标识文件具有相同文件标识的目标代码文件,对第一同标识文件进行覆盖。
86.如图3所示,共享目录中存储有文件a和文件b,目标代码存储目录中存储有文件a和文件c,其中,共享目录中的文件a与目标代码存储目录中的文件a文件名相同,共享目录层级最低,目标运行目录层级最高。
87.若先执行步骤204再执行步骤203,当执行步骤203时,目标运行目录中即已存在目标代码存储目录中文件a的第一同标识文件(目标运行目录中的文件a),此时,第一同标识文件的来源目录为共享目录,来源目录层级低于目标代码存储目录的目录层级,因此,可以将目标代码存储目录中文件a挂载到目标运行目录中,将目标运行目录中原来的文件a覆盖。
88.具体的,步骤“基于目标代码文件覆盖第一同标识文件”可以是在挂载了与第一同标识文件具有相同文件标识的目标代码文件后,删除对应的第一同标识文件,或者,也可以是用与第一同标识文件具有相同文件标识的目标代码文件的文件内容,替换对应的第一同标识文件中的文件内容。
89.再例如,在步骤203和步骤204同时执行时,可以将目标代码存储目录中的文件a和文件c挂载到目标运行目录中,将共享目录中的文件b挂载到目标运行目录中。由于共享目录的目录层级低于目标代码存储目录的目录层级,因此,不挂载共享目录中的文件a。
90.又例如,若先执行步骤203再执行步骤204,当执行步骤204时,目标运行目录中即已存在共享目录中文件a的第一同标识文件(目标运行目录中的文件a),此时,第一同标识文件的来源目录为目标代码存储目录,来源目录层级高于共享目录的目录层级,因此,可以不对共享目录中的文件a进行挂载。
91.204、基于目标代码文件,将共享目录下的目标运行环境文件挂载到目标运行目录下,目标运行目录下挂载的目标运行环境文件以及目标代码文件中不存在文件标识相同的文件。
92.其中,共享目录用于存储由代码运行系统的用户共享的运行环境文件。
93.运行环境文件是可以在运行目标代码文件时,为目标代码文件的运行构建所需的环境的文件。例如,运行环境文件可以是某一种或者某几种编程语言的拓展库,某一种或者某几种语言的编译环境配置文件,等等。
94.在一些可选的实施例中,在将共享目录下的目标运行环境文件挂载到目标运行目录下时,可以只挂载运行目标代码文件所需的一部分运行环境文件,将这部分运行环境文件作为目标运行环境文件。
95.或者,共享目录下除了目标代码文件所需的一部分运行环境文件外也还可以有其他的运行环境文件,在挂载时,可以将共享目录下的全部运行环境文件挂载到目标用户对
应的目标运行目录下,全部运行环境文件中包括目标运行环境文件。
96.在一些可选的实施例中,可以设置各类目录之间的层级关系,根据层级关系确定在挂载目标运行环境文件时的具体操作。例如,目标代码存储目录、目标运行目录和共享目录之间存在目录层级关系,共享目录层级最低,目标运行目录层级最高。
97.在先执行步骤203再执行步骤204的场景下,步骤“基于目标代码文件,将共享目录下的目标运行环境文件挂载到目标运行目录下”,可以包括:获取目标运行目录下的已挂载文件的文件标识;当已挂载文件中存在第二同标识文件时,确定第二同标识文件的来源目录层级,第二同标识文件的文件标识与共享目录下一运行环境文件的文件标识相同;当来源目录层级高于共享目录的目录层级时,从运行环境文件中确定与第二同标识文件的文件标识不同的目标运行环境文件;将目标运行环境文件挂载到目标运行目录。
98.可以理解的是,代码运行系统中满足目录层级关系的除了目标代码存储目录、目标运行目录和共享目录,还可以有其他的目录,本发明实施例对目录层级关系中目录的类别和数量不做限定。
99.205、基于目标运行目录下挂载的目标运行环境文件,运行目标运行目录下挂载的目标代码文件。
100.其中,在运行目标运行目录下挂载的目标代码文件时,可以是在一个独立的终端上运行,也可以是基于云计算技术在云端运行。
101.其中,云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
102.技术人员可以将运行代码所需的编程程序和编程环境的搭建和维护都布置在云计算资源池中,用户无需关注电脑操作系统、语言升级、拓展库安装等细节,打开浏览器输入网址后或者打开客户端后可以做到即开即用。
103.另外,云端化升级后用户在进行编程技能学习时,如需耗费大量cpu或gpu资源进行运算,也可以由云计算平台进行分配,而突破个人电脑的设备性能极限。
104.具体的,步骤“基于目标运行目录下挂载的目标运行环境文件,运行目标运行目录下挂载的目标代码文件”具体可以包括:基于目标运行目录下挂载的目标运行环境文件,配置目标代码文件运行所需的代码运行环境;根据代码运行环境,运行目标运行目录下挂载的目标代码文件。
105.其中,代码运行环境(英语:runtime environment,又称“运行期系统”,run

time system),指一种把半编译的运行码在目标机器上运行的环境。运行环境是一种介乎编译器及直译器的运行方式。
106.比如,在本发明实施例中,用户的个人电脑或者代码运行系统对应的云计算资源池中,可以已经布置了集成开发环境(intergrated development environment,ide),在配置代码运行环境时,可以是将目标运行环境文件与ide建立连接,以便在ide中运行目标代
码文件时可以正常调用目标运行环境文件。
107.可以理解的是,由于共享目录中存储由所述代码运行系统的用户共享的运行环境文件,因此,一般在用户使用代码运行系统之前,共享目录以及其中的运行环境文件就已经建立完成了。也就是说,本发明实施例提供的代码运行方法还可以包括:在代码运行系统的根目录下建立伪根目录作为共享目录,在共享目录存储运行环境文件。
108.其中,伪根目录是模仿代码运行系统的根目录建立的目录。在创建伪根目录时,伪根目录的目录结构以及伪根目录下各级目录中存储的文件,都与代码运行系统实际的根目录相同。
109.例如,代码运行系统可以是基于linux系统建立,在建立伪根目录时,如图4所示,可以是在linux系统根目录外建立一个目录,里面包含了一个完整的操作系统目录结构和必要的文件(运行环境文件)。
110.其中,最上层的“/”目录即为linux系统的根目录,“/”目录下的“bin”、“dev”、“etc”、“home”、“lib”以及“data”目录为linux系统的操作系统目录结构。
111.而伪根目录即为在原来linux系统的“data”目录下重新建立的“system”目录,“system”目录以及“system”目录下的“bin”、“dev”、“etc”、“home”、“lib”以及“data”目录的目录结构,是与linux系统的操作系统目录结构相同的目录。
112.通过建立伪根目录,可以避免没有根目录访问权限的用户自由访问根目录,代码运行系统的根目录以及根目录中的文件得到了保护。
113.但是,上述的操作仅仅是防止了用户进程访问系统文件,由于用户之间是共用同一个伪根目录(如图4中所示的/data/system/),恶意用户可以很容易通过修改这个目录的文件来影响其他正常用户的运行。
114.首先想到的解决方案是通过复制伪根目录(/data/system/),每个用户独立占用一个伪根目录来解决这个问题。但是此方案的缺点是每个用户都有一个伪根目录的副本,这些副本都是相同的,导致磁盘空间极大的浪费。
115.为了解决这一问题,本发明实施例在共享目录(伪根目录)的基础上,创建共享目录的上级目录作为目标用户的目标代码存储目录;创建代码存储目录的上级目录作为目标用户的目标运行目录。
116.通过各级目录之间的目录层级关系以及对代码存储目录和共享目录中文件的挂载,可以避免用户的文件修改操作,对共享目录中文件的影响。
117.其中,目标代码存储目录可以与目标运行目录同时或者非同时创建,例如,目标代码存储目录和目标运行目录可以都是在用户启用代码运行系统时即时创建,或者,目标代码存储目录可以是在用户对本地代码文件进行更新时创建,目标运行目录可以是在获取到目标用户的代码运行请求时创建,等等。本发明实施例对目标代码存储目录和目标运行目录的创建时间和创建顺序不做限定。
118.可以理解的是,为了便于技术人员可以对代码运行系统的根目录中的运行环境文件进行管理和调试,可以设置部分用户账号具有访问代码运行系统的根目录的权限,对于普通的用户则没有访问根目录的权限,只有访问共享目录的权限。也就是说,本发明实施例提供的代码运行方法还可以包括:
获取目标用户的根目录访问请求,根目录访问请求包括目标用户的用户标识;根据目标用户的用户标识,判断目标用户是否满足预设的根目录访问条件;当目标用户不满足根目录访问条件时,访问共享目录。
119.其中,预设的根目录访问条件可以是目标用户的用户标识与预设的具有根目录访问权限的用户的用户标识相同,或者,可以是目标用户的用户标识与预设的具有根目录访问权限的用户的用户标识相同,且访问根目录的时间在可访问时段内,等等。
120.具体的,可以由技术人员预先开发目录切换命令,当目标用户不是可以访问根目录的用户时,将用户实际访问的目录从根目录切换到共享目录。即,步骤“当目标用户不满足根目录访问条件时,访问共享目录”,可以包括:当目标用户不满足根目录访问条件时,调用目录切换命令;基于目录切换命令,将访问目录从根目录切换为共享目录;访问共享目录。
121.其中,访问目录的切换可以是用户正在访问目录时进行切换,或者,访问目录的切换也可以是用户启动代码运行系统但还没有实际访问目录就进行切换。
122.在实际应用过程中,如果是面向单个用户的单台电子设备,可以仅将数据保存在本地文件中。而在本发明实施例中可以是面向多用户多设备,可以将用户的数据(包括代码文件)保存在数据库中。如图5所示,本发明实施例提供的代码运行方法还可以包括:响应于目标用户的程序退出操作,将目标代码文件存储到数据库中,以及,删除目标代码存储目录和目标运行目录。
123.对应的,当用户在同一电子设备或者不同的电子设备上登录时,可以从数据库中获取用户需要的代码文件。也就是说,本发明实施例提供的代码运行方法还可以包括:获取目标用户的代码获取请求,代码获取请求包括目标用户的用户标识;根据用户标识,从数据库中获取目标用户对应的目标代码文件;将目标代码文件存储到预先创建的目标代码存储目录下。
124.如图5所示,数据库中可以保存有每个用户对应的代码文件。当目标用户启动代码运行系统时(例如目标用户登录了代码运行系统对应的代码运行网址),可以触发代码运行系统向云计算资源池的控制中心请求为目标用户分配对应的计算资源。
125.当代码运行系统具备了代码运行所需的计算资源后,可以基于计算资源,创建目标用户对应的ide以及ide session,ide session即代码运行网址与云计算资源池的控制中心之间的会话。目标用户在代码运行网址上的操作指令,可以通过ide session发送给云计算资源池的控制中心。
126.云计算资源池的控制中心可以基于用户的操作指令,在目标用户对应的计算资源中,进行目录的初始化(例如创建目标运行目录和目标代码存储目录等)、对目标用户的本地代码文件进行监控、从数据库中读取目标用户对应的目标代码文件(读取数据库,恢复文件)、启动ide等操作。以及,当目标用户结束对代码运行系统的使用时,云计算资源池的控制中心可以关闭ide、回收计算资源。
127.由上可知,本发明实施例中用户编辑的代码作为目标代码文件存储在目标代码存储目录中,运行代码所需的运行环境文件存储在共享目录中,在挂载时将目标代码文件和与目标代码文件不存在相同文件标识的目标运行环境文件挂载到目标运行目录下,因此,
用户即使恶意修改运行环境文件,被恶意修改的运行环境文件会作为目标代码文件存储在目标代码存储目录中,不会对共享目录下的原始的运行环境文件产生影响,可以避免用户编写的具有破坏性的代码对代码运行进程所在的系统或设备造成破坏,提升了代码运行环境的安全性。
128.根据前面实施例所描述的方法,以下将举例作进一步详细说明。
129.在本发明实施例中,将结合图1的系统,以服务器为云计算服务器为例进行说明。
130.(一)、代码运行系统的构建。
131.601、在服务器中配置编程语言的开发环境。
132.例如,可以在云平台(云计算资源池)的服务器中布置某一种或者多种编程语言的开发环境,比如c语言、python、java等等。
133.技术人员可以在云计算资源池中布置例如jupyterlab、code

server等模块以便于为用户提供相应的服务。其中,jupyterlab是为jupyter笔记本,代码和数据计算提供的基于web的交互式开发环境。code

server是一款基于vscode的在线编辑器,主要用于在linux服务器环境下,实现任何设备通过浏览器即可访问vscode, 进而实现在远程编程。
134.602、在代码运行系统的根目录下建立伪根目录作为共享目录,在共享目录存储运行环境文件。
135.其中,代码运行系统可以对云平台的计算资源进行统一管理,例如对计算资源的调度、自动扩容等等。
136.其中,共享目录中包含了一个完整的操作系统目录结构和必要的文件(运行环境文件)。
137.这样用户在使用代码运行系统时,如图4所示,访问到的根目录(/)其实就是/data/system/下的目录(共享目录),真正的根目录用户是无法访问的,也没法通过正常途径切回到真正的根目录上。
138.(二)、代码运行系统的应用。
139.如图6所示,本发明实施例的代码运行方法,具体流程可以如下:603、服务器获取目标用户的系统运行请求,与目标用户的用户设备建立通信。
140.例如,当用户启动在个人终端上安装的代码运行客户端,或者登陆代码运行网站,则用户所使用的用户设备可以向服务器发送目标用户的系统运行请求。
141.服务器在获取目标用户的系统运行请求后,启动云端的编程环境(ide),建立云端与用户设备之间的连接。
142.具体的,可以是创建idesession,通过服务器端会话技术,实现云端的服务器与用户设备之间的通信。
143.604、服务器创建共享目录的上级目录作为目标用户的目标代码存储目录,创建代码存储目录的上级目录作为目标用户的目标运行目录。
144.例如,如图3所示,代码运行系统在根目录之外有三级目录。其中,lowerdir(共享目录):表示较为底层的目录,修改联合挂载点merged的文件不会影响到lowerdir;upperdir(目标代码存储目录):表示较为上层的目录,修改联合挂载点merged的文件会在upperdir同步修改;
merged(目标运行目录):是lowerdir和upperdir合并后的联合挂载目录,在目标运行目录下挂载时,上层文件会覆盖下层文件。
145.605、服务器监测目标用户的用户设备中预设目录下的文件更新情况,根据文件更新情况,对目标代码存储目录中目标代码文件的内容进行更新。
146.可以理解的是,在云平台的场景下,云平台的服务资源也是有限的,例如,每次用户打开ide时jupyterlab/code

serve的运行环境都是动态生成,并且可能分布在不同的服务器上,在用户关闭ide时这些运行环境相关的资源都会被回收释放,这就导致用户所做的变动、编写的代码文件都会消失。因此,需要对用户的变动做持久化工作,保存到数据库中,并且在用户下次用ide打开该项目时,从数据库中还原文件。
147.首先想到的方案是修改保存文件的相关代码,将其要保存的内容保存到数据库中。但是该方案的弊端是必须修改jupyterlab/code

serve的源码,如果后续需要用到jupyterlab/code

serve最新版本的功能,都要进行代码合并操作,影响扩展效率。另外如果要扩展新的ide,都要修改一遍代码,不利于扩展。
148.具体的,在本发明实施例中,可以利用linux内核提供的inotify特性。inotify允许应用程序监听指定目录的变更(比如创建、写入、删除等操作),每当这些事件发生时,inotify都会及时向监听的应用程序发出响应消息。
149.在本发明实施例中,可以预先指定目标用户的用户设备中的预设目录,预设目录保存目标用户在编写程序时生成的项目工程相关文件。inotify可以对预设目录进行监听。
150.每当用户有修改文件并保存的操作时,jupyterlab/code

server的接口会将其保存到本地代码文件,inotify检测到预设目录下的本地代码文件有更新,将更新事件通知到服务器的服务进程。服务器的服务进程通过这些更新事件,读取本地代码文件中对应的文件内容并保存到目标代码文件中。
151.此方案可以用不改动jupyterlab/code

serv保存相关的逻辑代码,并且易于扩展新的ide。
152.606、服务器获取目标用户的代码运行请求,根据用户标识,从代码运行系统的代码存储目录中,确定目标用户对应的目标代码存储目录。
153.例如,在代码运行系统中可以创建有目标用户对应的命名空间。在确定目标代码存储目录时,可以先根据用户标识确定目标用户对应的命名空间,将目标用户对应的命名空间中的代码存储目录作为目标代码存储目录。
154.或者,可以获取代码运行系统所有的代码存储目录的目标标识,将目录标识和用户标识进行匹配,将匹配成功的目录标识对应的代码存储目录作为目标代码存储目录,等等。
155.607、服务器将目标代码存储目录下的目标代码文件和共享目录下的目标运行环境文件,挂载到目标用户对应的目标运行目录下。
156.例如,在挂载目标代码文件和目标运行环境文件时,共享目录下有a.txt文件,内容是abcd,目标代码存储目录下没有这个文件,那么用户看到的是挂载到目标运行目录下a.txt的内容,就是abcd。
157.而如果共享目录下有a.txt文件,内容是abcd,目标代码存储目录下也有a.txt文件,内容是1234,那么用户看到挂载到目标运行目录下目标代码存储目录下a.txt的内容,
就是1234。
158.608、服务器基于目标运行目录下挂载的目标运行环境文件,运行目标运行目录下挂载的目标代码文件。
159.可以理解的是,服务器可以将目标代码文件的运行结果返回给用户设备进行显示。
160.在用户退出代码运行的过程或者退出代码运行系统时,可以关闭服务器中的ide,回收代码运行系统中已被占用的计算资源。
161.由上可知,本发明实施例中用户编辑的代码作为目标代码文件存储在目标代码存储目录中,运行代码所需的运行环境文件存储在共享目录中,在挂载时将目标代码文件和与目标代码文件不存在相同文件标识的目标运行环境文件挂载到目标运行目录下,因此,用户即使恶意修改运行环境文件,被恶意修改的运行环境文件会作为目标代码文件存储在目标代码存储目录中,不会对共享目录下的原始的运行环境文件产生影响,可以避免用户编写的具有破坏性的代码对代码运行进程所在的系统或设备造成破坏,提升了代码运行环境的安全性。
162.为了更好地实施以上方法,相应的,本发明实施例还提供一种代码运行装置。
163.参考图7,该装置包括:请求获取单元701,可以用于获取目标用户的代码运行请求,代码运行请求可以包括目标用户的用户标识;目录确定单元702,可以用于根据用户标识,从代码运行系统的代码存储目录中,确定目标用户对应的目标代码存储目录,其中,代码存储目录与代码运行系统的用户之间一一对应,代码存储目录可以用于存储对应目标用户的代码文件;第一挂载单元703,可以用于将目标代码存储目录下的目标代码文件,挂载到目标用户对应的目标运行目录下,其中,代码运行系统中的运行目录与用户之间一一对应,运行目录可以用于挂载对应目标用户在运行代码时所需的所有文件;第二挂载单元704,可以用于基于目标代码文件,将共享目录下的目标运行环境文件挂载到目标运行目录下,其中,共享目录可以用于存储由代码运行系统的用户共享的运行环境文件,目标运行目录下挂载的目标运行环境文件以及目标代码文件中不存在文件标识相同的文件;代码运行单元705,可以用于基于目标运行目录下挂载的目标运行环境文件,运行目标运行目录下挂载的目标代码文件。
164.在一些可选的实施例中,第二挂载单元704可以用于获取各目标代码文件的目标代码文件标识,以及共享目录下各运行环境文件的运行环境文件标识;确定运行环境文件标识与所有目标代码文件标识均不相同的目标运行环境文件;将目标运行环境文件挂载到目标运行目录下。
165.在一些可选的实施例中,目标代码存储目录、目标运行目录和共享目录之间存在目录层级关系,共享目录层级最低,目标运行目录层级最高;第一挂载单元703,可以用于获取目标用户对应的目标运行目录下的已挂载文件的文件标识;当已挂载文件中存在第一同标识文件时,确定第一同标识文件的来源目录层级,
第一同标识文件的文件标识与目标代码文件中一文件的文件标识相同;当来源目录层级低于目标代码存储目录的目录层级时,将目标代码存储目录下的目标代码文件挂载到目标运行目录,以及,基于目标代码文件覆盖第一同标识文件;第二挂载单元704,可以用于获取目标运行目录下的已挂载文件的文件标识;当已挂载文件中存在第二同标识文件时,确定第二同标识文件的来源目录层级,第二同标识文件的文件标识与共享目录下一运行环境文件的文件标识相同;当来源目录层级高于共享目录的目录层级时,从运行环境文件中确定与第二同标识文件的文件标识不同的目标运行环境文件;将目标运行环境文件挂载到目标运行目录。
166.在一些可选的实施例中,如图8所示,本发明实施例提供的代码运行装置还可以包括内容更新单元706,可以用于监测目标用户的用户设备中预设目录下的文件更新情况,预设目录为用户设备中本地存储代码文件的目录;若预设目录下与目标代码文件对应的本地代码文件发生更新,读取本地代码文件的更新内容;根据本地代码文件的更新内容,对目标代码文件的文件内容进行更新,得到新的目标代码文件。
167.在一些可选的实施例中,本发明实施例提供的代码运行装置还可以包括空间隔离单元707,可以用于创建目标用户对应的命名空间;在目标用户对应的命名空间中创建目标代码存储目录和目标运行目录;对应的,代码运行单元705可以用于在目标用户对应的命名空间中,基于目标运行目录下挂载的目标运行环境文件,配置目标代码文件运行所需的代码运行环境;根据代码运行环境,运行目标运行目录下挂载的目标代码文件。
168.在一些可选的实施例中,本发明实施例提供的代码运行装置还可以包括目录创建单元708,可以用于在代码运行系统的根目录下建立伪根目录作为共享目录,在共享目录存储运行环境文件;创建共享目录的上级目录作为目标用户的目标代码存储目录;创建代码存储目录的上级目录作为目标用户的目标运行目录。
169.在一些可选的实施例中,本发明实施例提供的代码运行装置还可以包括目录访问单元709,可以用于获取目标用户的根目录访问请求,根目录访问请求可以包括目标用户的用户标识;根据目标用户的用户标识,判断目标用户是否满足预设的根目录访问条件;当目标用户不满足根目录访问条件时,访问共享目录。
170.在一些可选的实施例中,目录访问单元709可以用于当目标用户不满足根目录访问条件时,调用目录切换命令;基于目录切换命令,将当前访问的目录从根目录切换为共享目录;访问共享目录。
171.在一些可选的实施例中,本发明实施例提供的代码运行装置还可以包括系统退出单元710,可以用于响应于目标用户的系统退出操作,将目标代码文件对应于目标用户存储到数据库中;
删除目标代码存储目录和目标运行目录。
172.在一些可选的实施例中,本发明实施例提供的代码运行装置还可以包括文件获取单元711,可以用于获取目标用户的代码获取请求,代码获取请求可以包括目标用户的用户标识;根据目标用户的用户标识,从数据库中获取目标用户对应的目标代码文件;将目标代码文件存储到预先创建的目标代码存储目录下。
173.由上可知,通过代码运行装置,可以将用户编辑的代码作为目标代码文件存储在目标代码存储目录中,运行代码所需的运行环境文件存储在共享目录中,在挂载时将目标代码文件和与目标代码文件不存在相同文件标识的目标运行环境文件挂载到目标运行目录下,因此,用户即使恶意修改运行环境文件,被恶意修改的运行环境文件会作为目标代码文件存储在目标代码存储目录中,不会对共享目录下的原始的运行环境文件产生影响,可以避免用户编写的具有破坏性的代码对代码运行进程所在的系统或设备造成破坏,提升了代码运行环境的安全性。
174.此外,本发明实施例还提供一种电子设备,该电子设备可以为终端或者服务器等等,如图9所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:该电子设备可以包括射频(rf,radio frequency)电路901、包括有一个或一个以上计算机可读存储介质的存储器902、输入单元903、显示单元904、传感器905、音频电路906、无线保真(wifi,wireless fidelity)模块907、包括有一个或者一个以上处理核心的处理器908、以及电源909等部件。本领域技术人员可以理解,图9中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:rf电路901可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器908处理;另外,将涉及上行的数据发送给基站。通常,rf电路901包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、目标用户身份模块(sim, subscriber identity module)卡、收发信机、耦合器、低噪声放大器(lna,low noise amplifier)、双工器等。此外,rf电路901还可以通过无线通信与网络和其他设备通信。无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(gsm,global system of mobile communication)、通用分组无线服务(gprs ,general packet radio service)、码分多址(cdma,code division multiple access)、宽带码分多址(wcdma,wideband code division multiple access)、长期演进(lte,long term evolution)、电子邮件、短消息服务(sms,short messaging service)等。
175.存储器902可用于存储软件程序以及模块,处理器908通过运行存储在存储器902的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器902还可以包括存储器控制器,以提供处理器908和输入单元903对存储器902的访问。
176.输入单元903可用于接收输入的数字或字符信息,以及产生与目标用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元903可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集目标用户在其上或附近的触摸操作(比如目标用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测目标用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器908,并能接收处理器908发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元903还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
177.显示单元904可用于显示由目标用户输入的信息或提供给目标用户的信息以及电子设备的各种图形目标用户接口,这些图形目标用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元904可包括显示面板,可选的,可以采用液晶显示器(lcd,liquid crystal display)、有机发光二极管(oled,organic light

emitting diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器908以确定触摸事件的类型,随后处理器908根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图6中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
178.电子设备还可包括至少一种传感器905,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在电子设备移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等; 至于电子设备还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
179.音频电路906、扬声器,传声器可提供目标用户与电子设备之间的音频接口。音频电路906可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路906接收后转换为音频数据,再将音频数据输出处理器908处理后,经rf电路901以发送给比如另一电子设备,或者将音频数据输出至存储器902以便进一步处理。音频电路906还可能包括耳塞插孔,以提供外设耳机与电子设备的通信。
180.wifi属于短距离无线传输技术,电子设备通过wifi模块907可以帮助目标用户收发电子邮件、浏览网页和访问流式媒体等,它为目标用户提供了无线的宽带互联网访问。虽然图6示出了wifi模块907,但是可以理解的是,其并不属于电子设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
181.处理器908是电子设备的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,执行电子设备的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器908可包括一个或多个处理核心;优选的,处理器908可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、目标用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器908中。
182.电子设备还包括给各个部件供电的电源909(比如电池),优选的,电源可以通过电源管理系统与处理器908逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源909还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
183.尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备中的处理器908会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器902中,并由处理器908来运行存储在存储器902中的应用程序,从而实现各种功能,如下:获取目标用户的代码运行请求,代码运行请求包括目标用户的用户标识;根据用户标识,从代码运行系统的代码存储目录中,确定目标用户对应的目标代码存储目录,其中,代码存储目录与代码运行系统的用户之间一一对应,代码存储目录用于存储对应用户的代码文件;将目标代码存储目录下的目标代码文件,挂载到目标用户对应的目标运行目录下,其中,代码运行系统中的运行目录与用户之间一一对应,运行目录用于挂载对应用户在运行代码时所需的所有文件;基于目标代码文件,将共享目录下的目标运行环境文件挂载到目标运行目录下,其中,共享目录用于存储由代码运行系统的用户共享的运行环境文件,目标运行目录下挂载的目标运行环境文件以及目标代码文件中不存在文件标识相同的文件;基于目标运行目录下挂载的目标运行环境文件,运行目标运行目录下挂载的目标代码文件。
184.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
185.为此,本发明实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种代码运行方法中的步骤。例如,该指令可以执行如下步骤:获取目标用户的代码运行请求,代码运行请求包括目标用户的用户标识;根据用户标识,从代码运行系统的代码存储目录中,确定目标用户对应的目标代码存储目录,其中,代码存储目录与代码运行系统的用户之间一一对应,代码存储目录用于存储对应用户的代码文件;将目标代码存储目录下的目标代码文件,挂载到目标用户对应的目标运行目录下,其中,代码运行系统中的运行目录与用户之间一一对应,运行目录用于挂载对应用户在运行代码时所需的所有文件;
基于目标代码文件,将共享目录下的目标运行环境文件挂载到目标运行目录下,其中,共享目录用于存储由代码运行系统的用户共享的运行环境文件,目标运行目录下挂载的目标运行环境文件以及目标代码文件中不存在文件标识相同的文件;基于目标运行目录下挂载的目标运行环境文件,运行目标运行目录下挂载的目标代码文件。
186.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
187.其中,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
188.由于该计算机可读存储介质中所存储的指令,可以执行本发明实施例所提供的任一种代码运行方法中的步骤,因此,可以实现本发明实施例所提供的任一种代码运行方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
189.根据本技术的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述实施例中的各种可选实现方式中提供的方法。
190.以上对本发明实施例所提供的一种代码运行方法、装置、电子设备、存储介质和程序产品进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献