Python 3下的exec*系列函数包括:
os.execl(path, arg0, arg1, ...)
os.execle(path, arg0, arg1, ..., env)
os.execlp(file, arg0, arg1, ...)
os.execlpe(file, arg0, arg1, ..., env)
os.execv(path, args)
os.execve(path, args, env)
os.execvp(file, args)
os.execvpe(file, args, env)
这些函数将操作系统命令作为一个新的进程加载,并替换掉当前的调用进程。exec*系列函数的第一个参数file是操作系统命令的全路径,args为程序需要传递的参数,通常arg0为调用命令,从arg1开始才是需要传递的真正参数。
下面演示如何通过execl调用centos 5.4中ntpdate命令,202.120.2.101为上海交通大学时间服务器,具体实例代码如下:
#!/usr/bin/python3
import os
os.execl("/usr/sbin/ntpdate","ntpdate","202.120.2.101")
print("execute success!")
另外需要注意一点,在使用exec*命令时,ntpdate进程会替换当前进程,命令只会执行一次,如果使用以下方式来调用,程序依然只会执行一次后退出:
#!/usr/bin/python3
import os
import time
while True:
os.execl("/usr/sbin/ntpdate","ntpdate","202.120.2.101")
time.sleep(1)
print("execute success!")
如果想通过循环调用来定期更新和同步服务器时间可以使用os.system和os.popen函数,os.system返回执行命令的退出码,os.popen可以返回执行命令的后的显示结果.
通过改进以上程序代码,使用os.popen()的示例代码如下:
#!/usr/bin/python3
import os
import time
while True:
buf=os.popen("/usr/sbin/ntpdate 202.120.2.101")
time.sleep(1)
print(buf.readlines()[0])
使用os.system()的示例代码如下:
#!/usr/bin/python3
import os
import time
while True:
buf=os.system("/usr/sbin/ntpdate 202.120.2.101")
time.sleep(1)
print(buf)
以上代码均在centos 5.4及python 3.3环境下执行通过,代码中的 /usr/bin/python3需要根据你安装的python可执行路径来作相应Python获取网页编码的方法及示例代码
iis7站长之家。