如何获得控制终端的真实名称(如果有,否则为错误)作为路径名?
“实名”是指 not /dev/tty,其他任意进程不能使用它来指代同一个终端。如果可能,我更喜欢将答案作为简单的 shell 代码(如下例所示),否则作为 C 函数。
请注意,即使标准输入被重定向,这也必须工作,因此tty无法使用该实用程序:not a tty在这种情况下会出现错误,因为tty只打印连接到标准输入的终端的文件名。
在 Linux 下,可以使用:
echo "/dev/`ps -p $$ -o tty | tail -n 1`"
Run Code Online (Sandbox Code Playgroud)
但这不是可移植的,因为根据 POSIX,终端名称的格式是 unspecified。
关于 C 函数,ctermid (NULL)returns/dev/tty在这里没用。
注意:根据zsh文档,应该能够做到
zsh -c 'echo $TTY'
Run Code Online (Sandbox Code Playgroud)
但是当标准输入和标准输出都被重定向时,当前(版本 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
Run Code Online (Sandbox Code Playgroud) 我在 Debian 包装中应用了一个带有 quilt 的补丁,但发生了错误:
Applying patch debian/patches/fixshare.patch
patching file net/slirp.c
Hunk #1 FAILED at 529.
1 out of 1 hunk FAILED -- rejects in file net/slirp.c
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了一下,我知道这个错误是因为应用补丁时的“模糊”。现在,我的问题是什么是模糊以及如何解决应用被子补丁的问题?
我已经阅读了这篇文章并执行了它所说的步骤,但仍然有问题!
我尝试在 GNU/Linux 下挂载 SDHC 卡。与通常发生的情况不同,/var/log/syslog没有提及sdb1,只是:
Jul 26 16:07:53 xvii kernel: [ 159.404842] scsi 6:0:0:0: Direct-Access Singim SD Card MMC/SD 1.4F PQ: 0 ANSI: 0 CCS
Jul 26 16:07:53 xvii kernel: [ 159.405115] sd 6:0:0:0: Attached scsi generic sg2 type 0
Jul 26 16:08:01 xvii kernel: [ 168.239600] sd 6:0:0:0: [sdb] Attached SCSI removable disk
Run Code Online (Sandbox Code Playgroud)
而且fdisk -l /dev/sdb什么都不输出。我该怎么办?
编辑(2014-07-27):我可以再次拥有这张SD卡,但它似乎有问题。昨天,我正在通过 USB 读卡器尝试它。今天,我直接把它放在我笔记本电脑的SD插槽中试了一下,我得到了数千个I/O错误:
Jul 27 11:56:35 xvii kernel: [ 8091.317234] mmc0: new high speed SDHC card …Run Code Online (Sandbox Code Playgroud)