Questions tagged «exec»

exec()系列函数将当前过程映像替换为新过程映像,并保留了旧过程的pid和管道。此标记还用于内置的shell,可用于用程序或各种与重定向相关的东西替换当前的shell。


5
捕获退出命令的退出代码
我在bash脚本中有这个: exit 3; exit_code="$?" if [[ "$exit_code" != "0" ]]; then echo -e "${r2g_magenta}Your r2g process is exiting with code $exit_code.${r2g_no_color}"; exit "$exit_code"; fi 看起来它将在退出命令后立即退出,这很有意义。我想知道是否有一些简单的命令可以提供退出代码而无需立即退出? 我当时在猜测: exec exit 3 但它会显示错误消息:exec: exit: not found。我能做什么?:)

4
什么时候自己调用fork()和exec()?
我正在学习fork()和exec()命令。似乎fork()和exec()通常一起调用。(fork()创建一个新的子进程,而exec()用一个新的子进程替换当前的进程映像。)但是,在什么情况下,您可以单独调用每个函数?有这样的场景吗?


1
bash如何执行ELF文件?
当我在Linux Box上时,我使用bash作为外壳。现在,我想知道bash如何处理ELF文件的执行,也就是说,当我键入./program且program是ELF文件时。我grep了bash-4.3.tar.gz,似乎没有某种魔术数字解析器可以确定文件是否为ELF,也没有找到exec()syscall。 整个进程如何运作?bash如何将ELF的执行传递给OS?
8 bash  kernel  executable  exec  elf 

4
重定向并记录脚本输出
我正在尝试整理以下代码段,设计目标是记录脚本的所有输出,而不应该是包装器。线越少越好。 我不在乎用户输入(在此阶段),目标脚本是非交互式运行的。 该代码段需要 输出标准输出到日志,并始终回显到控制台 输出stderr记录日志,并回显到控制台,如果已启用调试 stderr消息应带有时间戳和其他用途 目前,我有以下内容只能在最新版本的bash(4.2+?)下进行测试,例如在Ubuntu精确版中,但是在CentOS6上表现不佳。 DEBUG_LOG="${0##*/}.log" # copy stdout to log always and echo to console exec > >(tee -a ${DEBUG_LOG}) # copy stderr to log only, unless debugging is enabled [ $DEBUG_TEST = "true" ] \ && exec 2> >(tee -a ${DEBUG_LOG} >&2) \ || exec 2>> …

1
在没有chsh或管理员特权的情况下更改默认Shell
我在该线程中看到了以下代码片段:如何将csh更改为bash作为默认shell sleep 2 if (-x /usr/local/bin/bash) then exec /bin/sh -c '. ~/.profile; exec /usr/local/bin/bash' endif 我的理解是,如果您将此代码段放入~/.login其中,则bash在您登录时会调用它。 我遇到类似的情况,我想使用类似的代码段来调用zsh与我登录时所使用的默认代码段不同的代码段。遇到这种麻烦的部分原因是因为我无法选择zsh在中允许的选项中我想要的版本chsh,并且我没有管理员权限。 有了这个: 在不同版本的zsh之间切换时,如何更改上面的代码段来执行此操作? 为什么exec上面的代码片段需要两个命令?他们在做什么?另外,为什么上述代码段使用sh 和 bash(用户应该使用登录csh)
8 shell  zsh  login  exec 

4
所有子流程均为Bash(!),
我尝试使用GDB,发现无论何时尝试生成我正在调试的程序,都会生成Bash(GDB会说starting myProg...,然后Bash出现。当我杀死Bash时,我会回到GDB中,会告诉我Bash的退出状态)。最初,我认为这是GDB的一个奇怪问题,但是后来我发现,尝试从Vim生成进程也只是生成了Bash。 经过一阵奇怪的启发,我将此问题与我的默认外壳程序是Tcsh联系了起来,并且由于不允许更改它,我只需将我的contains设置.tcshrc为exec bash。当我将其更改为bash或仅使用Tcsh时,问题消失了。 我对Tcsh的问题如何导致我的问题完全不了解。有人可以提供吗? 顺便说一句,我能够通过运行GDB PATH="" /usr/bin/gdb而不是just 获得临时修复gdb。它吐出bash: command not found,然后继续生成我要调试的程序。
1 bash  shell  tcsh  exec 

2
使用多个条件“查找”多个条件以使用babun复制到其他硬盘
我试图将大量图片复制到凌乱的旧硬盘驱动器上,而该文件无法在Windows文件资源管理器中打开(不要问...),我必须寻求帮助我亲爱的奶奶的方法。我可以做的,用Babun(超棒的Windows Shell)浏览它。 到目前为止,我已经尝试了以下命令: { veronique } » find /cygdrive/h/Documents\ and\ Settings -name '*.jpeg|png|JPEG' -exec cp '{}' /cygdrive/f/tof \; { veronique } » find /cygdrive/h/Documents\ and\ Settings -name '*.(jpeg|png|JPEG)' -exec cp '{}' /cygdrive/f/tof \; 没有结果...我缺少什么吗?
find  exec 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.