运行一个需要来自终端输入的程序,我可以通过Ctrl+D来“关闭”stdin。之后有没有办法重新打开标准输入? 最佳答案 在linux通常在POSIXy系统上,当您在终端中按下Ctrl+D时,标准输入描述符不会关闭;它只是使伪终端层变得可读,read()返回0。这就是POSIXy系统指示输入结束的方式。这并不意味着文件描述符(甚至是C库在其之上提供的流句柄)被关闭。正如SteveSummit在评论中提到的,您只需要使用clearerr()来清除流的输入结束状态,以便能够读取更多数据;这会告诉C库您注意到状态发生了变化,但无论如何都想尝
运行一个需要来自终端输入的程序,我可以通过Ctrl+D来“关闭”stdin。之后有没有办法重新打开标准输入? 最佳答案 在linux通常在POSIXy系统上,当您在终端中按下Ctrl+D时,标准输入描述符不会关闭;它只是使伪终端层变得可读,read()返回0。这就是POSIXy系统指示输入结束的方式。这并不意味着文件描述符(甚至是C库在其之上提供的流句柄)被关闭。正如SteveSummit在评论中提到的,您只需要使用clearerr()来清除流的输入结束状态,以便能够读取更多数据;这会告诉C库您注意到状态发生了变化,但无论如何都想尝
我在program.py中有以下代码:fromsysimportstdinforlineinstdin:printline我运行,输入行,然后按Ctrl+D,但程序没有退出。这确实有效:$printf"echo"|pythonprogram.py为什么当我按下Ctrl+d时程序没有退出?我正在使用Fedora18终端。 最佳答案 Ctrl+D有一个奇怪的效果。它不会关闭输入流,只会导致C级fread()返回空结果。对于常规文件,这样的结果意味着文件现在已经结束,但可以接受更多阅读,例如检查是否其他人在此期间向文件写入了更多数据。此外
我在program.py中有以下代码:fromsysimportstdinforlineinstdin:printline我运行,输入行,然后按Ctrl+D,但程序没有退出。这确实有效:$printf"echo"|pythonprogram.py为什么当我按下Ctrl+d时程序没有退出?我正在使用Fedora18终端。 最佳答案 Ctrl+D有一个奇怪的效果。它不会关闭输入流,只会导致C级fread()返回空结果。对于常规文件,这样的结果意味着文件现在已经结束,但可以接受更多阅读,例如检查是否其他人在此期间向文件写入了更多数据。此外
我希望我的脚本能够完成scp,即使输入了CTRL+C。我已经尝试使用陷阱来禁用CTRL+C,但是当scp正在进行时它不起作用。scp立即终止。有什么办法吗?代码如下。很简单。#!/bin/bashtrap''SIGINTSIGTERMscp-quser@server:/backup/large_file.txt/local/dir/更新:还要确保您的脚本顶部有“set-m”。 最佳答案 将它放在后台的子shell中以断开它与终端的连接。(scp...&)编辑:您可能希望将任何错误重定向到一个文件。
我希望我的脚本能够完成scp,即使输入了CTRL+C。我已经尝试使用陷阱来禁用CTRL+C,但是当scp正在进行时它不起作用。scp立即终止。有什么办法吗?代码如下。很简单。#!/bin/bashtrap''SIGINTSIGTERMscp-quser@server:/backup/large_file.txt/local/dir/更新:还要确保您的脚本顶部有“set-m”。 最佳答案 将它放在后台的子shell中以断开它与终端的连接。(scp...&)编辑:您可能希望将任何错误重定向到一个文件。
我有一个在Linux机器上运行的服务,它创建一个命名管道字符设备专用文件,我想编写一个Python3程序,通过编写文本命令和读取文本与该服务通信来自pipe设备的回复。我没有该服务的源代码。我可以使用os.open(named_pipe_pathname,os.O_RDWR),我可以使用os.read(...)和os.write(...)来读取和写入它,但这很痛苦,因为我必须编写自己的代码来在字节和字符串之间进行转换,我必须编写自己的readline(...)函数等我更愿意使用Python3io对象来读取和写入pipe设备,但是我能想到的每一种创建方法都会返回相同的错误:io.Unsu
我有一个在Linux机器上运行的服务,它创建一个命名管道字符设备专用文件,我想编写一个Python3程序,通过编写文本命令和读取文本与该服务通信来自pipe设备的回复。我没有该服务的源代码。我可以使用os.open(named_pipe_pathname,os.O_RDWR),我可以使用os.read(...)和os.write(...)来读取和写入它,但这很痛苦,因为我必须编写自己的代码来在字节和字符串之间进行转换,我必须编写自己的readline(...)函数等我更愿意使用Python3io对象来读取和写入pipe设备,但是我能想到的每一种创建方法都会返回相同的错误:io.Unsu
我有这个名为wsjs.sh的脚本:#!/bin/bashWS=/home/user/wsjscd$WSnohupatom.&gnome-terminalgruntwatch如果我在bash中运行它:./wsjs.sh然后atom编辑器,gnome-terminal分别启动,当前bash显示:user@ubuntu:~$./wsjs.pwdnohup:appendingoutputto‘nohup.out’Running"watch"taskWaiting...现在如果我按下ctrl+c,gruntwatch退出,但原子编辑器也关闭了。...这很奇怪。我在bash中手动输入了每个命令,并
我有这个名为wsjs.sh的脚本:#!/bin/bashWS=/home/user/wsjscd$WSnohupatom.&gnome-terminalgruntwatch如果我在bash中运行它:./wsjs.sh然后atom编辑器,gnome-terminal分别启动,当前bash显示:user@ubuntu:~$./wsjs.pwdnohup:appendingoutputto‘nohup.out’Running"watch"taskWaiting...现在如果我按下ctrl+c,gruntwatch退出,但原子编辑器也关闭了。...这很奇怪。我在bash中手动输入了每个命令,并