Articles of Linux操作系统

在Linux下伪造串行通信

我有一个应用程序,我想模拟设备和“调制解调器”之间的连接。 该设备将连接到串行端口,并通过该软件调制解调器进行通信。 出于testing目的,我希望能够使用模拟软件设备来testing发送和接收数据。 Python代码示例 device = Device() modem = Modem() device.connect(modem) device.write("Hello") modem_reply = device.read() 现在,在我的最终应用程序中,我将只传递/ dev / ttyS1或COM1或任何应用程序使用。 但是我怎么能用软件来做到这一点呢? 我正在运行Linux ,应用程序是用Python编写的。 我尝试过创build一个先进先出( mkfifo ~/my_fifo ),这个工作确实有效,但是我需要一个先进先出(FIFO)来编写,另一个用于读取。 我想要的是打开~/my_fake_serial_port并读取和写入。 我也用pty模块来支付,但是也不能让它工作。 我可以从pty.openpty()获得一个主从文件描述符,但试图读取或写入它们只会导致IOError Bad File Descriptor错误消息。 更新 评论指出我的问题是否有一些程序像COM0COM在Linux? 它使用socatbuild立虚拟串行连接。 我这样使用它: socat PTY,link=$HOME/COM1 PTY,link=$HOME/COM2 对于你们其他人,谢谢你给我提供有价值的信息。 我select接受Vinay Sajips的回答,因为这是我在社会build议出现之前所提出的解决scheme。 这似乎工作得很好。

将subprocess.Popen中的stdout保存到文件中,并在文件中写入更多内容

我正在写一个Python脚本,它使用subprocess.Popen执行两个程序(从编译的C代码),每个程序生成标准输出。 脚本获取该输出并将其保存到文件中。 由于输出有时足够大以致无法覆盖subprocess.PIPE,导致脚本挂起,所以我直接将stdout发送到日志文件。 我想让我的脚本写入文件的开始和结尾,以及两个subprocess.Popen调用之间。 但是,当我查看我的日志文件时,从脚本写入日志文件的所有内容都集中在文件顶部,其后是所有可执行文件stdout。 我怎样才能交叉我的文字添加到文件? def run(cmd, logfile): p = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=logfile) return p def runTest(path, flags, name): log = open(name, "w") print >> log, "Calling executable A" a_ret = run(path + "executable_a_name" + flags, log) print >> log, "Calling executable B" b_ret = run(path + "executable_b_name" + flags, log) print >> […]

由bash脚本调用的执行程序的跟踪

一个脚本是行为不端。 我需要知道是谁调用了这个脚本,谁调用了这个调用脚本,等等,只能通过修改这个不正确的脚本。 这类似于堆栈跟踪,但是我对一个bash脚本中的函数调用堆栈不感兴趣。 相反,我需要由脚本启动的已执行程序/脚本链。

如何获取一个进程在监听的端口?

如何获得进程使用python监听的端口? 该过程的PID是已知的。

通过写入/ dev / input / mice来控制鼠标

我正在使用Ubuntu 12.04。 对于我的一个应用程序,我需要使用脚本在软件中控制鼠标。 我明白,鼠标设备是/dev/input/mice 。 如果我做一个cat /dev/input/mice ,然后移动我的鼠标,我看到很多输出被转储到屏幕上。 现在我想删除鼠标,并有一个脚本写入/dev/input/mice mouse为了控制鼠标指针 请帮助我使用以下命令: (1)执行左键单击 (2)执行右键单击 (3)将鼠标从一个位置移动到另一个位置。 请注意,我正在寻找一个shell脚本解决scheme,而不是一个C / C ++解决scheme。

打开的文件太多,但是lsof显示打开文件的合法数量

我的Java程序失败了 Caused by: java.io.IOException: Too many open files at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:883)… 这里是/etc/security/limits.conf中的关键代码。 他们为用户设置最大文件为500k: root soft nofile 500000 root hard nofile 500000 * soft nofile 500000 * hard nofile 500000 我运行lsof来统计打开的文件数目 – 全局和jvm进程。 我在/proc/sys/fs检查了计数器。 一切似乎都没问题 我的进程只有4301个文件打开,限制为500k: :~# lsof | wc -l 5526 :~# lsof -uusername | wc -l 4301 :~# cat /proc/sys/fs/file-max 744363 :~# […]

如何等待进程完成使用IO.popen?

我在Ruby中使用IO.popen来在循环中运行一系列命令行命令。 然后我需要在循环之外运行另一个命令。 直到循环中的所有命令均已终止,循环外部的命令才能运行。 我如何让程序等待发生? 目前最后的命令运行得太快了。 一个例子: for foo in bar IO.popen(cmd_foo) end IO.popen(another_cmd) 所以所有的cmd_foos需要在another_cmd运行之前返回。

我如何确定栈上的返回地址?

我知道,如果我在里面的某个函数foo()从bar()函数中调用某处,那么这个返回地址被压入堆栈。 #include <stdio.h> void foo() { unsigned int x; printf("inside foo %x\n", &x); } int main() { foo(); printf("in main\n"); return 0; } 在上面的代码中,当foo函数处于活动状态时,我会得到第一个推送的本地variables的地址。 我怎样才能访问返回地址(主叫做foo),这个地址在堆栈之前的某个地方被推到了这个variables之前? 该位置是否固定,可以相对于第一个局部variables进行访问? 我怎样才能修改它? 编辑:我的环境是x86处理器与gcc编译器上的Ubuntu 9.04。

PHPMyadmin xampp错误

我拼命试图获得Linux的1.8.0 Ubuntu的12.04 LTS的xampp访问phpmyadmin。 我知道这是一个普遍的问题,但是我已经在networking上尝试了很multithreading,而且我仍然坚持着。 Xampp似乎运行良好,本地主机开始页面不错,包括链接到侧边栏的phpmyadmin。 当我按照这个链接,我得到一个403错误: 访问被禁止! 新的XAMPP安全概念: 只能从本地networking访问请求的目录。 该设置可以在文件“httpd-xampp.conf”中configuration。 如果您认为这是服务器错误,请与网站站长联系。 错误403 localhost Apache / 2.4.2(Unix)OpenSSL / 1.0.1c PHP / 5.4.4 我已经尝试了很多东西,包括修改httpd-xampp.conf,其相关的部分现在看起来像: http ://pastebin.com/J4f4tNVs 我的/opt/lampp/phpmyadmin/config.inc.php看起来像: http ://pastebin.com/5PZPXK5s 按照其他说明,我更改了/ lampp的所有权: chown -Rv nobody:root ./lampp/* 请帮帮我! 谢谢,Matt

通过shell脚本将用户添加到sudoers

是否可以通过shell脚本将用户添加到sudoers文件? 我一直在环顾四周,依然找不到任何东西。