execve、execv、execvp、execle、execl、execlp 小结

Reading time ~1 minute

execve、execv、execvp、execle、execl、execlp这六个函数都是在父进程中fork一个子进程,然后在子进程中exec调用新程序。在这六个函数中只有execve是内核级系统调用,其余5个都是通过调用execve来实现。

这六个函数的区别,主要是在参数上,可以通过名字来方便记忆。

  • l表示参数为list,即形如:execl("/bin/sh", "-c", "id", NULL)

  • v表示参数为vector,即形如:char * const argv = {"/bin/sh", "-c", "id", NULL}; execv("/bin/sh", argv)

  • p表示在默认路径$PATH中查找

  • e表示参数中有环境变量,环境变量也是以vector的形式传递,作为最后一个参数

挂载网络文件夹后网络故障时文件操作命令卡死

挂载 NFS 或者 Samba 的时候,经常会由于网络故障导致挂载好的链接断掉。此时如果尝试进行 ls、cd、df 等各种命令,只要与此目录沾上边,就会卡住。如果使用了类似 oh-my-zsh 这种配置的,只要在网络目录中,弹出命令提示符前就会直接卡住。这个时候第一反应就是...… Continue reading

路由折腾记 第四弹

Published on September 02, 2017