import{_ as e,c as o,o as t,a4 as a}from"./chunks/framework.Cy9JvDAg.js";const f=JSON.parse('{"title":"6.9 - OS相关操作","description":"","frontmatter":{"title":"6.9 - OS相关操作","footer":true,"lastUpdated":true,"outline":"deep"},"headers":[],"relativePath":"6.9.md","filePath":"6.9.md"}'),s={name:"6.9.md"},r=a('<h2 id="_6-9-os相关操作" tabindex="-1">6.9 - OS相关操作 <a class="header-anchor" href="#_6-9-os相关操作" aria-label="Permalink to &quot;6.9 - OS相关操作&quot;">​</a></h2><p>本库的通过 os 表实现。</p><h3 id="os.clock" tabindex="-1">os.clock () <a class="header-anchor" href="#os.clock" aria-label="Permalink to &quot;os.clock () {#os.clock}&quot;">​</a></h3><p>返回当前程序所使用的CPU时间的近似秒数表示，底层使用的是ISO标准C函数 clock 。</p><h3 id="os.date" tabindex="-1">os.date ([format [, time]]) <a class="header-anchor" href="#os.date" aria-label="Permalink to &quot;os.date ([format [, time]]) {#os.date}&quot;">​</a></h3><p>返回包含了日期和时间的字符串或表，其按照所给字符串参数 format 来格式化的。</p><p>如果传入了参数 time ，则使用这个时间来格式化（关于该值的描述请参见<a href="#os.time">os.time</a>）。否则，date 会使用当前时间来格式化。</p><p>如果 format 参数由 &#39;!&#39; 开头，那么日期会使用协调世界时格式化。在该选项字符的后边，format 内容为 &quot;*t&quot; 时，date 会返回带有这些属性的表：year、month (1–12)、day (1–31)、hour (0–23)、min (0–59)、sec (0–61，因为有闰秒)、wday (星期几，1–7，周日为1)、yday (本年中的第多少天，1–366)、以及 isdst (布尔值，其为夏令时标志)。如果没有可用的相关信息，最后一个属性可能会缺省。</p><p>如果 format 参数不为 &quot;*t&quot;，那么 date 会返回表示日期的字符串，格式化规则同ISO标准C函数 strftime 。</p><p>如果 format 缺省，则默认为 &quot;%c&quot;，其会给出一个人类可读的日期，并且使用本地的表示方法。</p><p>在非POSIX系统上，该函数可能并不是线程安全的，因为其依赖于C函数 gmtime 和 localtime 。</p><h3 id="os.difftime" tabindex="-1">os.difftime (t2, t1) <a class="header-anchor" href="#os.difftime" aria-label="Permalink to &quot;os.difftime (t2, t1) {#os.difftime}&quot;">​</a></h3><p>返回时间 t1 和 t2 秒数之间的差距（此处的时间为<a href="#os.time">os.time</a>所返回的结果）。在POSIX、Windows、以及其他的系统上，该值就是 t2-t1 。</p><h3 id="os.execute" tabindex="-1">os.execute ([command]) <a class="header-anchor" href="#os.execute" aria-label="Permalink to &quot;os.execute (\\[command\\]) {#os.execute}&quot;">​</a></h3><p>该函数等效于ISO标准C函数 system 。其通过操作系统的 shell 来执行传入的 command 参数。如果命令成功结束则第一个结果会返回<strong>true</strong>，否则返回<strong>false</strong>。在第一个返回值后该函数会返回一个字符串加上一个数字，如下所示：</p><ul><li><strong>&quot;exit&quot;：</strong> 命令正常结束；后边跟一个表示命令退出状态码的数字。</li><li><strong>&quot;signal&quot;：</strong> 命令因为收到一个系统信号结束；后跟的数字是结束这个命令的信号。</li></ul><p>如果缺省了 command 参数，那么 os.execute 则会返回一个布尔值，该布尔值为<strong>true</strong>时表示系统的 shell 可用。</p><h3 id="os.exit" tabindex="-1">os.exit ([code [, close]]) <a class="header-anchor" href="#os.exit" aria-label="Permalink to &quot;os.exit ([code [, close]]) {#os.exit}&quot;">​</a></h3><p>调用ISO标准C函数 exit 以结束宿主程序。如果 code 参数为<strong>true</strong>，则会返回状态码 EXIT_SUCCESS ；如果 code 参数为<strong>false</strong>，则会返回状态码 EXIT_FAILURE ；如果 code 参数是一个数字，则会将这个数字作为状态码返回。code 默认为 <strong>true</strong> 。</p><p>当可选参数 close 为真值是，该函数会在退出前关闭Lua状态机（参见 <a href="/lua5.4-manual-zh/4.6.html#lua_close">lua_close</a>）。</p><h3 id="os.getenv" tabindex="-1">os.getenv (varname) <a class="header-anchor" href="#os.getenv" aria-label="Permalink to &quot;os.getenv (varname) {#os.getenv}&quot;">​</a></h3><p>获取当前进程中名为 vername 的环境变量，如果变量未定义则返回<strong>fail</strong>。</p><h3 id="os.remove" tabindex="-1">os.remove (filename) <a class="header-anchor" href="#os.remove" aria-label="Permalink to &quot;os.remove (filename) {#os.remove}&quot;">​</a></h3><p>删除给定名称相应的文件（或者在POSIX系统中可以删除空目录）。如果函数执行失败，则返回<strong>fail</strong>加上一个描述错误的字符串以及错误码。否则返回<strong>true</strong>。</p><h3 id="os.rename" tabindex="-1">os.rename (oldname, newname) <a class="header-anchor" href="#os.rename" aria-label="Permalink to &quot;os.rename (oldname, newname) {#os.rename}&quot;">​</a></h3><p>将名为 oldname 的目录或文件重命名为 newname 。如果函数执行失败，则返回<strong>fail</strong>加上一个描述错误的字符串以及错误码。否则返回<strong>true</strong>。</p><h3 id="os.setlocale" tabindex="-1">os.setlocale (locale [, category]) <a class="header-anchor" href="#os.setlocale" aria-label="Permalink to &quot;os.setlocale (locale [, category]) {#os.setlocale}&quot;">​</a></h3><p>当前程序的本地设置。参数 locale 是一个描述了具体设置的与系统相关的字符串；参数 category 是一个字符串选项，用以描述改变哪个本地项，各项为： &quot;all&quot;、&quot;collate&quot;、&quot;ctype&quot;、&quot;monetary&quot;、&quot;numeric&quot;、或是 &quot;time&quot;；默认值为 &quot;all&quot;。该函数会返回新的本地项名称，或者在修改申请不能通过时则会返回<strong>fail</strong>。</p><p>如果 locale 参数是一个空字符串，则当前的本地项会被设为一个提前实现定义好的原生本地项。例如当 locale 是字符串 &quot;C&quot;，则当前的本地项被设置标准C设置。</p><p>当第一个参数为<strong>nil</strong>时，该函数仅仅返回当前本地项中所给类的名称。</p><p>该函数可能不是线程安全的，因为其依赖于C函数 setlocale 。</p><h3 id="os.time" tabindex="-1">os.time ([table]) <a class="header-anchor" href="#os.time" aria-label="Permalink to &quot;os.time (\\[table\\]) {#os.time}&quot;">​</a></h3><p>不带参数调用该函数时会返回当前时间。或者可以根据给定的参数数来使得返回表示当地日期和时间。此处作为参数的表必须年月日含有字段—— year、month 和 day，或者可选包含字段 hour（默认为12）、min（默认为0）、sec（默认为0）、以及 isdst（默认为<strong>nil</strong>）。其他的字段会被忽略。对于这些字段的相关描述，请参见<a href="#os.date">os.date</a>函数。</p><p>调用函数时，这些字段的值不用必须在其有效范围之内。例如，当 sec 为 -10 时，其表示提前于其他字段所表示的时间10秒；如果 hour 为1000，则表示提前于其他字段所表示的时间1000个小时。</p><p>返回值是一个数字，其含义取决于你的系统。在 POSIX、Windows 以及一些其他的系统上，这个数字表示从某些给定时间（&quot;epoch&quot;）开始的秒数。在其他系统上，其没有用以表示的含义，该数字只是由 time 函数所返回，可用于作为<a href="#os.date">os.date</a>和<a href="#os.difftime">os.difftime</a>的参数。</p><p>当传入一个表来调用该函数时， os.time 中使用的所有字段也遵循和<a href="#os.date">os.date</a>函数中所描述中的规范，所以它们都表示在调用前相同的时间，但是取值于各自的有效范围。</p><h3 id="os.tmpname" tabindex="-1">os.tmpname () <a class="header-anchor" href="#os.tmpname" aria-label="Permalink to &quot;os.tmpname () {#os.tmpname}&quot;">​</a></h3><p>返回一个字符串，其可以用作临时文件的文件名。该文件必须在使用前显式地打开，并且当再也不需要时显式地删除。</p><p>在POSIX系统中，该函数还会创建同名文件，以避免冲突的风险。（也许同时有其他地方在创建这个文件。）你仍然需要打开这个文件并删除它（直到你不在用它为止）。</p><p>如果可以的话，你也许更喜欢用<a href="/lua5.4-manual-zh/6.8.html#io.tmpfile">io.tmpfile</a>，其会在程序结束时自动删除文件。</p>',40),l=[r];function n(i,m,c,d,h,u){return t(),o("div",null,l)}const q=e(s,[["render",n]]);export{f as __pageData,q as default};
