草庐IT

STDIN_FILENO

全部标签

python - sys.stdin 在 ctrl-d 上不关闭

我在program.py中有以下代码:fromsysimportstdinforlineinstdin:printline我运行,输入行,然后按Ctrl+D,但程序没有退出。这确实有效:$printf"echo"|pythonprogram.py为什么当我按下Ctrl+d时程序没有退出?我正在使用Fedora18终端。 最佳答案 Ctrl+D有一个奇怪的效果。它不会关闭输入流,只会导致C级fread()返回空结果。对于常规文件,这样的结果意味着文件现在已经结束,但可以接受更多阅读,例如检查是否其他人在此期间向文件写入了更多数据。此外

python - sys.stdin 在 ctrl-d 上不关闭

我在program.py中有以下代码:fromsysimportstdinforlineinstdin:printline我运行,输入行,然后按Ctrl+D,但程序没有退出。这确实有效:$printf"echo"|pythonprogram.py为什么当我按下Ctrl+d时程序没有退出?我正在使用Fedora18终端。 最佳答案 Ctrl+D有一个奇怪的效果。它不会关闭输入流,只会导致C级fread()返回空结果。对于常规文件,这样的结果意味着文件现在已经结束,但可以接受更多阅读,例如检查是否其他人在此期间向文件写入了更多数据。此外

c - 当为 stdout 打开非阻塞 I/O 时,操作系统也为 stdin 打开它是否正确?

我注意到在OSX和Linux上都有一些意外的行为。为标准输出打开非阻塞I/O(使用O_NONBLOCK)也会为标准输入打开它!这些操作系统的行为是否正确?如果是这样,这种行为是由POSIX定义的吗?如果是这种情况,请指出相关文档。这是我用来测试这个的示例程序:#include#include#include#includeintmain(intargc,char*argv[]){intflags=fcntl(STDOUT_FILENO,F_GETFL);if(argc>1&&strcmp(argv[1],"1")==0){fcntl(STDOUT_FILENO,F_SETFL,flag

c - 当为 stdout 打开非阻塞 I/O 时,操作系统也为 stdin 打开它是否正确?

我注意到在OSX和Linux上都有一些意外的行为。为标准输出打开非阻塞I/O(使用O_NONBLOCK)也会为标准输入打开它!这些操作系统的行为是否正确?如果是这样,这种行为是由POSIX定义的吗?如果是这种情况,请指出相关文档。这是我用来测试这个的示例程序:#include#include#include#includeintmain(intargc,char*argv[]){intflags=fcntl(STDOUT_FILENO,F_GETFL);if(argc>1&&strcmp(argv[1],"1")==0){fcntl(STDOUT_FILENO,F_SETFL,flag

Python pty.spawn stdin 未回显但重定向到 master 的 stdout

我想从Python调用一个程序并让它相信它的stdout即使Python的进程标准输出附加到管道,它也是一个tty。所以我使用了pty.spawn功能来实现这一点,可以从以下方面进行验证:$python-c"importsys;fromsubprocessimportcall;call(sys.argv[1:])"python-c"importsys;printsys.stdout.isatty()"|catFalse$python-c"importsys;importpty;pty.spawn(sys.argv[1:])"python-c"importsys;printsys.std

Python pty.spawn stdin 未回显但重定向到 master 的 stdout

我想从Python调用一个程序并让它相信它的stdout即使Python的进程标准输出附加到管道,它也是一个tty。所以我使用了pty.spawn功能来实现这一点,可以从以下方面进行验证:$python-c"importsys;fromsubprocessimportcall;call(sys.argv[1:])"python-c"importsys;printsys.stdout.isatty()"|catFalse$python-c"importsys;importpty;pty.spawn(sys.argv[1:])"python-c"importsys;printsys.std

linux - 反馈两个进程的stdin和stdout

我有两个进程通过stdin和stdout相互连接。假设我有进程A和进程B,B的stdout需要输入A的stdin,A的stdout需要输入B的stdout。是否有一种简单的方法可以用简单的命令来表达这种关系,或者是否有一个基本的shell脚本可以实现这一点?提前致谢。 最佳答案 狂欢4introducescoproc:declare-aFDScoprocFDS{process_A;}process_B&${FDS[1]} 关于linux-反馈两个进程的stdin和stdout,我们在St

linux - 反馈两个进程的stdin和stdout

我有两个进程通过stdin和stdout相互连接。假设我有进程A和进程B,B的stdout需要输入A的stdin,A的stdout需要输入B的stdout。是否有一种简单的方法可以用简单的命令来表达这种关系,或者是否有一个基本的shell脚本可以实现这一点?提前致谢。 最佳答案 狂欢4introducescoproc:declare-aFDScoprocFDS{process_A;}process_B&${FDS[1]} 关于linux-反馈两个进程的stdin和stdout,我们在St

linux - 在Linux中,为什么所有进程都有一个global/dev/stdin文件?

不同进程的标准输入不应该是唯一的吗?如果是这样,stdin文件的路径不应该像/dev/pid/stdin而不是全局/dev/stdin吗?有人对此有想法吗? 最佳答案 /dev/stdin是唯一的,因为它是一个符号链接(symboliclink)到/proc/self/fd/0/proc/self是一个符号链接(symboliclink)仅您正在运行的进程可以看到它的process-id/proc文件系统是一个虚拟(不是真实)文件系统它能够为每个进程显示不同的View。进一步阅读:LinuxFilesystemHierarchy:1

linux - 在Linux中,为什么所有进程都有一个global/dev/stdin文件?

不同进程的标准输入不应该是唯一的吗?如果是这样,stdin文件的路径不应该像/dev/pid/stdin而不是全局/dev/stdin吗?有人对此有想法吗? 最佳答案 /dev/stdin是唯一的,因为它是一个符号链接(symboliclink)到/proc/self/fd/0/proc/self是一个符号链接(symboliclink)仅您正在运行的进程可以看到它的process-id/proc文件系统是一个虚拟(不是真实)文件系统它能够为每个进程显示不同的View。进一步阅读:LinuxFilesystemHierarchy:1