Questions tagged «controlling-terminal»



2
如何获得控制终端的真实名称?
如何获得控制终端的真实名称(如果存在,否则为错误)作为路径名? 所谓“实名”,是指not /dev/tty,其他任意进程都不能使用它来指代同一终端。如果可能,我更倾向于将答案作为简单的shell代码(如下面的示例),否则作为C函数。 请注意,即使重定向了标准输入,此操作也必须起作用,以使该tty实用程序无法使用:not a tty在这种情况下,可能会出现错误,因为tty仅打印连接到标准输入的终端的文件名。 在Linux下,可以使用: echo "/dev/`ps -p $$ -o tty | tail -n 1`" 但这不是可移植的,因为根据POSIX,终端名称的格式未指定。 关于C函数,ctermid (NULL)return /dev/tty,在这里没有用。 注意:根据zsh文档,一个应该可以 zsh -c 'echo $TTY' 但是当同时重定向标准输入和标准输出时,当前(版本5.0.7)失败: $ zsh -c 'echo $TTY > /dev/tty' < /dev/null /dev/pts/9 $ zsh -c 'echo $TTY > /dev/tty' < /dev/null > /dev/null /dev/tty

3
调用与控制终端断开连接的命令/脚本?
我正在研究通常以自动化流程运行的脚本的行为(例如cron,Jenkins)。脚本可以(最终)调用以交互方式运行时行为不同的命令(寻求用户输入);例如,patch将询问如何处理反向补丁,并svn询问密码,但是我需要查看当它们非交互式运行时会发生什么。 说服patch它是非交互的是相当容易的。我只需要重定向stdout成为非tty: $ </dev/null > >(cat) /path/to/myscript --args 但是,svn将连接到控制端子(如果存在);否则将连接到控制端子。编辑脚本以通过--non-interactive不是一个真正的选择,因为它来自多个层次,很难确定我是否找到了每个调用。 有没有办法在没有控制终端的情况下(因此/dev/tty不存在)非交互地调用脚本/命令?我希望stdout / stderr仍然可以转到我的终端。 (我在非交互式外壳中找到了问题“运行脚本”吗?但是该问题的答案讨论了cron和用户环境之间的差异;我已经消除了除非交互性之外的所有差异。)

3
背景,僵尸,守护程序和不带ctty的这些概念是否连接在一起?
这些过程的概念是如何关联在一起- ,,background 和?zombiedaemonwithout controlling terminal 我觉得它们之间有某种距离,特别是通过的概念controlling terminal,但是我仍然没有太多信息可以讲述一个故事,例如是否需要给一个孩子讲一些有关Linux的文章而又不撒谎。 更新#1:例如(我不知道这是不是真的) background-- zombie前台进程无法成为zombie,因为zombie是没有父进程的后台进程 daemon- without ctty-所有daemons无运行ctty,但不是所有的过程,而不ctty是daemons background-- 可以检索到daemona background process以再次交互式运行,daemon is not zombie- without ctty- zombie如果有无所谓ctty连接到它或不 background- without ctty- processes发送到后台,而他们有ctty,如果成为守护进程或模具ctty是从他们采取
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.