exec函数是用来执行文件的,它的实现算法 输入:文件名,自变量表,环境变量表 1。文件名 → 找到 inode; 2。检查文件可执行,检查文件头可否装入; 3。自变量,环境变量拷贝到系统空间; 4。解除原有分区(正文段,数据段); 5. 保留原有proc, user区,核心栈; 6. 分配新分区(正文段,数据段,bss区,用户栈) ,分配页表,连入进程虚拟空间; 7. 自变量,环境变量拷贝到用户栈顶; 8. 处理setuid程序、setgid程序; ...
本帖最后由 jueljust 于 2012-04-12 14:00 编辑 我想在find出来的结果上执行[code]ls -l --color {}; file {}[/code]或者[code]ls -l --color {} && file {}[/code]应该怎么写 如果exec上不支持 ; && || 之類的,麻煩大家告知一下
本帖最后由 fallingstar64 于 2012-02-23 22:00 编辑 引用自 http://perldoc.perl.org/functions/exec.html @args = ( "echo surprise" ); exec @args; # subject to shell escapes # if @args == 1 exec { $args[0] } @args; # safe even with one-arg list 为什么说 exec { $args[0] } @args; 是更为安全的一种用法呢???
读如下脚本后,对exec的疑问 start) echo -n "Starting svscan: " exec env - PATH="/usr/local/bin:/usr/bin:/bin" SVDIR="$SVDIR" \ csh -cf 'svscan $SVDIR &; echo $! > /var/run/svscan.pid' RETVAL=$? # Sorry, I don't catch exit code of svscan. echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/svscan ;; exec env - PATH="/usr/local/bin:/usr/bin:/...
-exec 必须由一个 ; 结束,而因为通常 shell 都会对 ; 进行处理,所以用 \; 防止这种情况。 {} 可能需要写做 '{}',也是为了避免被 shell 过滤 find ./ -type f -exec grep iceskysl {} /dev/null \; ./表示从当前目录找 -type f,表示只找file,文件类型的,目录和其他字节啥的不要 -exec 把find到的文件名作为参数传递给后面的命令行,代替{}的部分 -exec后便跟的命令行,必须用“ \;”结束 #find ./ -type f -name "*.cpp"...
#include unsitd.h> int execl( const char *pathname, const char *arg 0, ... /* (char *) 0 */); int execv( const char *pathname, const char *rgv[] ); int execle(const char *pathname,const char *arg 0, /* (char *)0, char *cones nt v p [] */); int execve(const char *pathname,const char *rgv[], char *consten vp [] ); int execlp(const char *filename,const char *arg 0, ... /* (char *) 0 */); int execv...