Articles of Linux操作系统

将input传递给bash中的交互式命令行程序

我有一个有自己的提示程序 example_program> 我需要通过这个程序运行一系列的命令 example_program> command_A example_program> command B Please enter input: [input_here] example_program> command C 我可以通过shell脚本中的以下行发送命令A,B,C: (echo "command_C" && cat) | (echo "command_B" && cat) | (echo "command_A" && cat ) | example_program 如何input所需的input,然后在命令B([input_here])之后提示input? 我无权发送或期望。

使用shell脚本使用sedreplacestring的特定字符

我必须用一些其他的值replace一个特定的文件行。 例如:我有一个文件的内容如下: request.timing=0/10 * * * * * ? 现在,我想用dynamic值replace10(或者具体来说,在那个地方的任何值)。 例如,如果我想用20replace它,那么文件应该更新为: request.timing=0/20 * * * * * ? 有人能帮我吗? 我使用sed如下: sed -i "s/request.timing=0\/??/request.timing=0\/$poller" poller是我们通过的dynamic值。

应该.gitignore也被添加并致力于混帐?

.gitignore用于忽略不希望被提交git的文件。 它位于项目的根目录中。 所以这个文件也应该被添加和承诺为其他文件或?

将MFC文档/视图转换为?

我的问题很难形成,但要开始: 我有一个我曾经工作过的很长时间的MFC SDI应用程序,似乎从来不适合Doc / View架构。 即在Doc中没有任何有用的东西。 它是multithreading的,我需要做更多的线程等。 我也梦想把它移植到Linux X Windows上,但是我对这个编程环境一无所知。 也许Mac也是。 我的问题是从哪里去的? 我想我想从MFC文档/视图直接Win API的东西与消息循环和窗口过程等转换,但任务似乎是巨大的。 Linux X Windows环境是否使用类似的消息循环,窗口过程体系结构? 我可以参加吗? 像一次转换一点点,而不使我的程序无法长时间工作? 稍后添加: 我的程序是一个文件比较程序(听起来很简单)。所以,以简单的方式说明我的困惑,通常一个文件可以有多个视图,但是在这个应用程序中,我有一个包含多个(两个)文件(文件)的视图。 我有一个“比较引擎”,是我在DOS时代首先写回来的,这是程序的核心,而视图只是查看那个例程的输出。 有时我认为我的一些“视图”代码在“文档”类中是有意义的,但是我不知道从哪里开始将它分成更多的类。 我最近开始阅读“Programming Windows”5th Ed。 Charles Petzold(我知道这已经过时了(C)1998),希望能够更好地理解直接的Windows编程。 C#,.NET,MFC,MVC,Qt,wxWidgets等选项泛滥 我发现我经常被困在试图理解MFC框架中发生的事情,因为我的代码中的东西不工作,因为它似乎应该,但问题是,我真的不明白如何在后台处理事情。 这就是为什么我试图学习“直接Windows编程”,我的程序有我写的所有消息传递代码。 我希望这有助于对我的问题有足够的了解,以便有人可以在我的路上指导我。

在线程中显示对话框

我有一个pygtk添加其中有一个gtk.Button(),当按下必须做5秒的工作。 所以, 在信号处理程序中实现时间密集型函数的思想是一个线程。 首先,我在开头添加了gtk.gdk.threads_init()。 我的信号处理程序是def send_sms() ,我有另一个函数def send_sms_mycantos() ,我称之为线程。 threading.Thread(target = self.send_sms_mycantos, args=(phone_no, message_text, username, password)).start() 我也有一个显示对话框的function。 def dialog_notification(self, message, dialog_type): dlg = gtk.MessageDialog(self.window, gtk.DIALOG_DESTROY_WITH_PARENT, dialog_type, gtk.BUTTONS_CLOSE, message) dlg.run() dlg.destroy() 现在,如果我在我的线程中调用上述函数 self.dialog_notification("Message sent successfully", gtk.MESSAGE_INFO) 我得到这个错误。 SMSSender.py: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.0. 这是实施线程的正确方法吗? 我究竟做错了什么。 错误就像线程不知道Xserver正在运行。

用非主libc编译(eglibc,uClibc)

我正在embedded式环境中工作。 我有一个交叉编译器的ARM架构与eglibc因为它的主要库(即与工具链一起默认的libc )。 现在我想要一些应用程序与uClibc链接。 所以我用这个工具链编译了uClibc 。 现在尝试编译和链接与uClibc的应用程序,有一个错误。 它正在链接到工具链的默认库。 我认为它可能在同一台机器上有两个不同的libcs​​(例如,libc,uClibc)。 我在网上search和以下 单个主机上有多个glibc库 正如它所build议的,我做了以下事情 $arm-unknown-linux-gnueabi-gcc -c test.c -o TEST $arm-linux-gnueabi-gcc TEST -o dynamic_test_with_new_opts -Wl,rpath=/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib -Wl,-dynamic-linker=/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib/ld-uClibc.so.0 在这种情况下,它与eglibc的默认libc.so.6 eglibc 如何链接到不同的libc文件? 正如上面的链接build议,我甚至尝试了以下几点: $arm-unknown-linux-gnueabi-gcc -Xlinker -rpath=/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib -Xlinker -I/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib/ld-uClibc-0.9.32.1.so test.c -o dynamic_test_with_linker_options 在这种情况下,它也被链接到eglibc的默认libc.so.6 我哪里错了? 我真的被困在这。 有人可以摆脱一些光?

TCP RST段向套接字点对点发送多less个情况?

我知道,当一个进程崩溃时,现有的TCP套接字将被放弃,通过发送RST包(段)到其他对端,相关的套接字fd在其他对端将收到RST包。 还有其他情况下RST数据包发出? 例如,如果一个进程在套接字fd上调用close(),但在该套接字上留下未读数据,它是否也会通过该套接字fd将RST数据包(段)发送给其他节点?

检测GTK窗口何时移动/用户resize

我想要检测用户何时完成重新resize或移动GTK窗口。 基本上相当于Windows中的WM_EXITSIZEMOVE 。 我已经看过用户的GTK检测窗口resize,并能够使用configuration事件检测大小/位置的变化; 然而,因为我的其他代码是架构师,我想知道什么时候resize完成。 几乎像ValueChanged而不是ValueChanging事件。 我想如果我能找出是鼠标button被释放或不,然后尝试检测是否是我得到的最后一个事件。 但是无法find一个方法来做到这一点或者窗口对象。

gcc编译.c与.s文件 – .bss混淆(bug?)

在IA32体系结构的Ubuntu 12.04下使用gcc 4.6.3时遇到了一个问题,那就是使用存储在.bss段上的汇编文件编译C文件,同时使用.comm和.lcomm指令。 在.comm和.lcomm缓冲区之间,汇编文件foo.s使用接近最大的空间让我在这个分区中分配(foo计算长整数的总分解)。 用一个汇编文件bar.s来处理I / O等等,所有东西都编译和链接正常(和快速),并且工作正常。 当我使用C文件bar.c处理I / O时,gcc不会终止 – 至less不会在5分钟内完成。 .bss请求接近我的小型笔记本内存,但由于.bss段没有得到编译时初始化,并与bar.s一起工作,我不明白为什么会发生这种情况。 当我减小在foo.s中请求的.bss大小时,gcc编译并链接正常,并且所有的东西都按照它应该执行的那样执行。 此外,正如所料,在每种情况下使用创build的可执行文件的文件大小 gcc bar.c foo.s -Wall 不依赖于.bss请求的大小 (我编译的大小都比原来的小,大小不一)。 在所有情况下,可执行文件都是非常小的(可能是10k),实际上它的大小是相同的,但显然,原始文件不能成功编译并挂起。 这是海湾合作委员会的错误? 有没有一个命令行选项来防止这种情况发生? 或者是怎么回事? 编辑:每个评论,这里是与.bss段分配的部分: # Sieve of Eratosthenes # Create list of prime numbers smaller than n # # Note: – no input error (range) check # – n <= 500,000,000 (could be […]

Linux / Unix检查VPN连接是否处于活动状态

我有一个代码,检测OpenVPN连接是否打开或closures: if echo 'ifconfig tun0' | grep -q "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00" then echo "VPN up" else echo "VPN down" fi exit 0 现在我试图重新编写代码来使用PPTP或IPSEC连接。 我试过做: if echo 'ifconfig ppp0' | grep -q "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00" 或与ipsec相同,但不起作用。 有没有其他方法来检测PPTP或IPSEC连接?