转---python os.exec*()家族函数的用法
execl(file, arg0,arg1,...) 用参数列表arg0, arg1 等等执行文件
execv(file, arglist) 除了使用参数向量列表,其他的和execl()相同
execle(file, arg0,arg1,... env) 和execl 相同,但提供了环境变量字典env
execve(file,arglist, env) 除了带有参数向量列表,其他的和execle()相同
execlp(cmd, arg0,arg1,...) 于execl()相同,但是在用户的搜索路径下搜索完全的文件路径名
execvp(cmd, arglist) 除了带有参数向量列表,与execlp()相同
execlpe(cmd, arg0, arg1,... env) 和execlp 相同,但提供了环境变量字典env
execvpe(cmd,arglist, env) 和execvp 相同,但提供了环境变量字典env
用法:
os.execl("/usr/bin/python ", "test.py ",`'i ')这样写是不行的,
要这样
os.execl("/usr/bin/python ", "python ", 'test.py ', 'i ')
os.exec*()都只是posix系统的直接映射,所以os.execl的第一个参数 "/usr/bin/python "是程序的可执行文件,而其他的都是program argument,就是c中int main(int argc,char** argv)中的argv。
而python的sys.argv应是c中argv的[1:],所以os.execl中的第二个参数 "python "对于python程序test.py不可见而且没有用。
实际上os.execl的第二个参数也就是int main(int argc,char** argv)中的argv[0]可以是任意的,它本质上是提供给c程序作为main()函数的第一个参数使用。
比如你写一个c程序如下。
1
2
3
4
5
6
7
8
|
int main( int argc, char ** argv) { int i; for (i=0; i<argc; i++) { printf ( "%d--%s\n" , i, argv[i]); } } |
编译成aaa
如果你单独执行
/path/to/aaa bbb ccc
这时会打印
0--/path/to/aaa
1--bbb
2--ccc
实际上Shell执行execl("/path/to/aaa", "/path/to/aaa", "bbb", "ccc")把argv[0]设置为/pat/to/aaa。
产生一个误解就是认为execl中第二个参数必须是 "/path/to/aaa"的程序名,其实不然。
而用
os.execl( "/path/to/aaa", "ttt", 'bbb', 'ccc')
则打印
0--ttt
1--bbb
2--ccc
转---python os.exec*()家族函数的用法的更多相关文章
- (转)Python中的split()函数的用法
Python中的split()函数的用法 原文:https://www.cnblogs.com/hjhsysu/p/5700347.html Python中有split()和os.path.split ...
- python路径拼接os.path.join()函数的用法
os.path.join()函数:连接两个或更多的路径名组件 1.如果各组件名首字母不包含’/’,则函数会自动加上 2.如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃 3.如果最后一个组 ...
- $Python常用内置函数典型用法
Python中有许多功能丰富的内置函数,本文基于Python 2.7,就常用的一些函数的典型用法做一些积累,不断更新中. sorted函数的三种用法 # coding:utf-8 # sorted函数 ...
- python os模块进程函数
Table of Contents 1. 系统进程 2. 举例 2.1. os.fork 2.2. os.exec 和 os.system 2.3. os.wait 3. 总结 系统进程 今天在看&l ...
- Python OS模块常用函数说明
Python的标准库中的os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Wi ...
- Python中的join()函数的用法
函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字 ...
- python os模块实用函数
os.sep可以取代操作系统特定的路径分隔符.windows下为 “\\” os.name字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'pos ...
- Python中的split()函数的用法
函数:split() Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(lis ...
- python os.path.isfile函数
最近刚开始学习Python,做了个小练习:扫描当前目录及其子目录中的文件,找出文件名中含有指定关键字的文件并打印文件名.思路很简单,如果是文件则判断是否满足条件:如果是目录则进入目录搜索文件,递归. ...
随机推荐
- 浅谈cpu.idle和cpu.load
1.概述 大家经常对一个系统的容量进行评估时,会参考cpu.idle和cpu.load指标,但是这两个指标到底在什么区间,表示系统是正常或者异常呢,业内有不同的说法.因此本文搜集一些资料,并对一个系统 ...
- 简单谈谈DNS协议
DNS协议也可以称为DNS服务,全称是Domain Name System,即域名系统,和HTTP协议一样,也是一个位于应用层的协议(服务),它是基于运输层的UDP协议的,关于网络协议的分层介绍,见这 ...
- 【Mysql】—— 索引的分类
注意:索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引.MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换.MEMORY/HEAP存储引 ...
- JS中var声明与function声明两种函数声明方式的区别
JS中常见的两种函数声明(statement)方式有这两种: // 函数表达式(function expression) var h = function() { // h } // 函数声明(fun ...
- XQN number format
Q Numbers FormatAn XQN format number is an 1+X+N bit twos complement binary number; a sign bitfollow ...
- 一对一 只需将另一个表的id设置为主键和外键即可
一对一 只需将另一个表的id设置为主键和外键即可
- BZOJ5311 贞鱼(动态规划+wqs二分+决策单调性)
大胆猜想答案随k变化是凸函数,且有决策单调性即可.去粘了份fread快读板子才过. #include<iostream> #include<cstdio> #include&l ...
- 如何修改可运行Jar包,如何反编译Jar包
将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All ...
- day14 装饰器模拟验证附加功能
user_list=[ {'}, {'}, {'}, {'}, ] current_dic={'username':None,'login':False} def auth_func(func): d ...
- bzoj1007/luogu3194 水平可见直线 (单调栈)
先按斜率从小到大排序,然后如果排在后面的点B和前面的点A的交点是P,那B会把A在P的右半段覆盖掉,A会把B在P的左半段覆盖掉. 然后如果我们现在又进来了一条线,它跟上一条的交点还在上一条和上上条的左边 ...