我试图学习在Linux上的基本asm,我找不到一个很好的参考。 NASM的文件似乎假设你已经知道masm …我没有findcmp的文档(英特尔指令参考之外)的例子。 我写了一个程序,从标准input读取单个字节,并将其写入标准输出。 下面是我的修改,尝试检测标准input上的EOF,并在到达EOF时退出。 问题是它永远不会退出。 我只是不断打印从标准input读取的最后一个字符。 这个问题是在我的EOF检测( cmp ecx, EOF )和/或我跳转到_exit标签( je _exit ),我想。 我究竟做错了什么? %define EOF -1 section .bss char: resb 1 section .text global _start _exit: mov eax, 1 ; exit mov ebx, 0 ; exit status int 80h _start: mov eax, 3 ; sys_read mov ebx, 0 ; stdin mov ecx, […]
我需要在Python中将标准input切换到非缓冲模式,以便我可以读取单个字符。 我设法让它工作,但是现在标准输出被打破了:不pipe怎么样,在换行符之后,一些空格字符被发出,第一行是零,第二行是3,第三行是6,像这样: ASD ASD ASD 操作系统是Ubuntu Linux 12.04,64位版本,Python版本是3.2.3。 我怎么能摆脱这种行为? 以下是我用过的代码: import sys import tty import termios fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) tty.setraw(sys.stdin) for i in range(0, 10): print("ASD") termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
我想从Python调用一个程序,并使其相信它的stdout是一个tty,即使Python的进程标准输出连接到一个pipe道。 所以我使用了pty.spawn函数来实现,可以通过以下方法来validation: $ python -c "import sys; from subprocess import call; call(sys.argv[1:])" python -c "import sys; print sys.stdout.isatty()" | cat False $ python -c "import sys; import pty; pty.spawn(sys.argv[1:])" python -c "import sys; print sys.stdout.isatty()" | cat True (我们看到,在第二个命令中,我们已经实现了我们的目标,即产生的过程被欺骗,认为它的标准是tty。) 但问题是,如果我们使用pty.spawn那么它的input不会被回显,而是被redirect到主站的stdout。 这可以通过以下命令看到: $ python -c "import sys; import pty; pty.spawn(sys.argv[1:])" cat > out.txt $ # Typed […]
我试图看看,如果我从键盘读取的东西,而我有多个进程与fork()(在我的情况下,有两个孩子和父母),我发现了以下问题会发生什么:我需要告诉父母等待孩子的进程,否则程序performance奇怪。 我做了一个研究,发现问题出在父母身上,他需要等待孩子的过程结束,因为如果父母的过程首先结束,那么他会closuresSTDIN,对吗? 但是我也发现每个进程都有一个STDIN的副本,所以我的问题是: 为什么它这样工作,为什么只有父母有STDIN和孩子没有问题,我的意思是为什么如果孩子的过程首先结束不影响STDIN,但如果父母的过程首先结束,它会影响STDIN? 这是我的testing: 我没有等待()运行程序,并input一个数字后,程序停止,但后来我再次input两次,另外两个来自printf()的消息出现。 当我用wait()运行程序时,一切正常,每个进程分别调用scanf()并读取一个不同的数字。
在Linux的BusyBox 命令中存在命令microcom与串行调制解调器进行通信: BusyBox v1.13.2 (2012-05-10 17:13:08 CEST) multi-call binary Usage: microcom [-d DELAY] [-t TIMEOUT] [-s SPEED] [-X] TTY Copy bytes for stdin to TTY and from TTY to stdout Options: -d Wait up to DELAY ms for TTY output before sending every next byte to it -t Exit if both stdin and TTY are […]
我有一个程序,我从文件中加载文本,然后根据其中一个字段进行过滤。 我感兴趣的是这个过滤步骤之后的数据大小。 理想情况下,我可以这样做: awk '$2>=10' <myfile | du – awk '$2>=10' <myfile | du – 我可以应用filter并将输出保存在某个地方,然后调用du,然后删除文件,但文件非常大,因此写入磁盘可能需要一段时间。 认识到du代表“磁盘使用”,我怀疑我是在问这个程序是如何工作的。 如果还有其他的常用工具可以做到这一点,请给出build议!
我有一个脚本vbsredirect一些数据到myApp的标准input(在Windows中用C编写)。 如果myApp在myAppfind第一个myApp会话的PID之前已经启动,并将通过stdin接收到的inputredirect到myApp的第一个会话的stdin,该会话处理stdin。 所以当myApp收到一个标准input,没有其他的myApp实例正在运行时,它会处理标准input并执行一些操作。 所以问题是:如何将stdin从一个应用程序redirect到另一个知道这个secnd spp的PID? language = C platform = MSwindows
我已经在Windows上通过Cygwinconfiguration了inetd并作为服务启动。 剧本: use strict; use warnings; use IO::Socket; use IO::Handle; use IO::File; use IO::Select; print "input something\n"; STDOUT-> autoflush (1); my $data = <STDIN> || die "(Failed reading STDIN) $^E (Error) $! (End)\n"; 在命令行上: telnet localhost <port> 它立即失败: (Failed reading STDIN) The parameter is incorrect (Error) Bad file descriptor (End) 我一直在search整个谷歌,但无法find解决scheme。 任何人都可以解释一下吗? 不胜感激! 更新:谢谢你的答复,我知道IO :: […]
我在Windows控制台应用程序中使用了典型的puts , printf和getchar函数。 现在我想redirect标准输出和标准input到COM端口。 redirectstdout单独工作正常: freopen ("COM1", "w", stdout); 之后所有的输出都按照预期进入COM1。 然而,在投入方面,我面临两个问题: freopen ("COM1", "r", stdin); 1)只有stdinredirect,COM1打开确定。 但是, getchar (或类似的函数)不会从COM1返回字符。 getchar永远不会返回。 我尝试了几种模式(r,r +,rb,甚至w)。 2)如果stdout已经被redirect到COM1,那么对stdin的freopen调用失败(返回NULL)。 可能是因为COM1已经在使用stdout。 环境:控制台应用程序,Windows 7,MinGW 难道我做错了什么? 有没有其他(或更好的)方法来完成redirect? 谢谢你的帮助!
int x,y,m; for(;;){ m=scanf("%d %d",&x,&y); if (m!=2 || m==EOF){ break; } else{ printf("/%d/%d/\n",x,y); } } if (feof ( stdin )){ printf("End of input\n"); }else if(m!=2){ printf("There was an error\n"); } 在linux下ctrl + D表示input结束,对于windows ctrl + z应该是这样做的,但是不起作用。 有任何想法吗?