Articles of Linux操作系统

使用popen和专用的TTY Python运行交互式Bash

我需要在一个独立的Python进程中运行一个交互的Bash实例,并使用它自己的TTY(我不能使用pexpect)。 我使用这个代码片段,我通常看到类似的程序中使用: master, slave = pty.openpty() p = subprocess.Popen(["/bin/bash", "-i"], stdin=slave, stdout=slave, stderr=slave) os.close(slave) x = os.read(master, 1026) print x subprocess.Popen.kill(p) os.close(master) 但是当我运行它时,我得到以下输出: $ ./pty_try.py bash: cannot set terminal process group (10790): Inappropriate ioctl for device bash: no job control in this shell 运行Strace显示一些错误: … readlink("/usr/bin/python2.7", 0x7ffc8db02510, 4096) = -1 EINVAL (Invalid argument) … ioctl(3, […]

使用subprocess.Popen通过SSH或SCP发送密码

我试图使用subprocess.Popen运行一个scp (安全复制)命令。 login要求我发送密码: from subprocess import Popen, PIPE proc = Popen(['scp', "user@10.0.1.12:/foo/bar/somefile.txt", "."], stdin = PIPE) proc.stdin.write(b'mypassword') proc.stdin.flush() 这立即返回一个错误: user@10.0.1.12's password: Permission denied, please try again. 我确定密码是正确的。 我可以通过在shell上手动调用scp来轻松validation它。 那么为什么这不工作? 请注意,对此有许多类似的问题,询问subprocess.Popen 。打开并发送自动SSH或FTPlogin密码: 我怎样才能从一个Python脚本在Linux设置用户密码? 使用subprocess发送密码 这些问题的答案不起作用和/或不适用,因为我正在使用Python 3。

先从命令行调用一个python脚本,而不要先input“python”

问题:在命令行中,如何在不必在脚本名称前键入python情况下调用python脚本? 这甚至有可能吗? 信息: 我写了一个用于从命令行访问sqlite数据库的方便脚本,但我不喜欢键入“python SQLsap args”,而只是键入“SQLsap args”。 我不知道这是否可能,但是知道这是否是好事。 不仅仅是这个程序。

将g ++ 4.8链接到libstdc ++

我在桌面上下载并构build了gcc 4.8.1,运行64位Ubuntu 12.04。 我build立它的源头,如文档build议,并与命令 ../../gcc-4.8.1/configure –prefix=$HOME –program-suffix=-4.8 make make -k check make install 它似乎通过了所有的testing,我把所有的东西都安装到我的主目录(后缀为-4.8),以便与系统gcc(版本4.6.3)区分开来。 不幸的是,当我使用g ++ – 4.8编译c ++程序时,它链接到系统libc和libstdc ++,而不是从gcc-4.8.1编译的新程序。 我下载并构build了gcc 4.8,因为我想在标准库中使用新的C ++ 11function,所以这种行为绝对不是我想要的。 我能做些什么来让gcc-4.8自动链接到它附带的标准库,而不是系统标准库?

java3D libconfiguration问题

香港专业教育学院遇到一些麻烦configurationjava3D与我的IDE环境… 我已经下载了j3d-1_5_2-linux-i586.zip,并解压j3dcore.jar,j3dutils.jar,vecmath.jar,libj3dcore-ogl.so,libj3dcore-ogl-cg.so并将它们全部添加为“参考库”我的项目文件夹。 这摆脱了我得到的任何编译警告,但是当我编译和运行应用程序时,我得到以下exception! Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) at java.lang.Runtime.loadLibrary0(Runtime.java:840) at java.lang.System.loadLibrary(System.java:1047) at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:231) at java.security.AccessController.doPrivileged(Native Method) at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:200) at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:157) at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:987) at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:299) at Hello3d.<init>(Hello3d.java:10) at Hello3d.main(Hello3d.java:18) 这里也是对源代码的简要介绍。 注意:一旦Eclipse被添加为引用库,Eclipse会自动使用Ctrl + Shift + O自动引入导入库path。 import javax.media.j3d.BranchGroup; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.universe.SimpleUniverse; public class Hello3d { public Hello3d(){ SimpleUniverse universe […]

内存限制在64位Linux操作系统上运行的32位进程

一个32位进程在64位Linux上有多less虚拟内存(也就是说,在开始获取NULL指针之前,我可以分配多less内存并使用malloc() )? 我在我的32位Linux上试过了,达到了大约3GB的限制。 我能在64位Linux上获得更多的信息吗?

为什么没有返回语句的主函数返回值12?

我写了一个打印表格的程序。 我没有在主函数中包含返回语法,但仍然每当我inputecho $? 它显示12。 我的源代码: #include <stdio.h> int main(void) { int ans,i,n; printf("enter the no. : "); scanf("%d",&n); for(i=1;i<=10;i++) { ans = n*i; printf("%d * %d = %d\n",n,i,ans); } } 我没有写回12,但是每次执行程序时都返回12。 谢谢。

如何configuration内存使用情况?

我知道Valgrind,但它只是检测内存pipe理问题。 我正在search的是一个工具,它给了我一个概述,我的程序的哪些部分消耗多less内存。 例如树形图(如KCachegrind为Callgrind所做的)的graphics表示将很酷。 我在一台Linux机器上工作,所以Windows工具不会帮助我很多。

在C中读取/写入二进制文件

有没有人有一个可以写入二进制文件的代码的例子。 还有可以读取二进制文件并输出到屏幕的代码。 看例子,我可以写入文件确定但是,当我尝试从文件读取它不正确的输出。

使用git作为Sudo的gnome-keyring时,出现错误

我正在寻找一种方法来安全地存储凭据,同时连接到我们使用SSL的Git服务器。 我碰到@ james-ward的这个build议(只编辑我做的是我更新了我们的“系统”configuration,而不是我们的Git的“全局”configuration( https://stackoverflow.com/a/14528360/6195194 ) sudo apt-get install libgnome-keyring-dev cd /usr/share/doc/git/contrib/credential/gnome-keyring sudo make git config –system credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring 我然后可以运行 git clone https://ipaddress/git/repo.git 和证书助手将存储我的凭据,但是当我运行以下: sudo git clone https://ipaddress/git/repo.git testfolder 它给我以下错误 ** (process:3713): CRITICAL **: Error communicating with gnome-keyring-daemon 我有时候需要运行sudo git clone,因为有时我需要做一个克隆的目录需要它。 任何帮助,将不胜感激。 我正在使用的版本: – git版本1.9.1 – Ubuntu服务器14.0.4 先谢谢你! 理查德·O