小编use*_*812的帖子

"std :: cout"在Android-ndk中是否可用

在Android-ndk中,我们可以使用"__android_log_write","_ _ android_log_print"等来将消息输出到"LogCat"窗口.如果我使用"std :: cout"输出一些字符串怎么样?例如

std::cout << "some strings" << std::endl;
Run Code Online (Sandbox Code Playgroud)

字符串将在何处发送.

似乎Android没有控制台应用程序,并且可能无法发送上述字符串.我可以将"stdout"重定向到文件,以便将字符串发送到"std :: cout"等同于记录消息吗?

c++ console android-ndk

37
推荐指数
2
解决办法
2万
查看次数

Python - 如何用管道执行shell命令?

我有一个案例要在Python中执行以下shell命令并获取输出,

echo This_is_a_testing | grep -c test
Run Code Online (Sandbox Code Playgroud)

我可以使用这个python代码在python中执行上面的shell命令,

>>> import subprocess
>>> subprocess.check_output("echo This_is_a_testing | grep -c test", shell=True)
'1\n'
Run Code Online (Sandbox Code Playgroud)

但是,由于我不想使用"shell = True"选项,我尝试了以下python代码,

>>> import subprocess
>>> p1 = subprocess.Popen(["echo", "This_is_a_testing"], stdout=subprocess.PIPE)
>>> p2 = subprocess.Popen(["grep", "-c", "test"], stdin=p1.stdout)
>>> p1.stdout.close()
>>> p2.communicate()
(None, None)
Run Code Online (Sandbox Code Playgroud)

我想知道为什么输出是"无",因为我已经参考了网页上的描述:http://docs.python.org/library/subprocess.html#subprocess.PIPE

我错过了代码中的一些要点吗?有什么建议/想法吗?提前致谢.

python subprocess pipe

33
推荐指数
4
解决办法
4万
查看次数

如何将Bash Shell命令的输出逐行传递给Perl进行Regex处理?

我有一些Bash Shell命令的输出数据.输出以"\n"或"\ 0"逐行分隔.我想知道有没有办法将输出传递到Perl并在Perl中逐行处理数据(就像将输出汇总到awk一样,但在我的情况下它是在Perl上下文中.).我想命令可能是这样的:

Bash Shell command | perl -e 'some perl commands' | another Bash Shell command
Run Code Online (Sandbox Code Playgroud)

假设我想在"逐行"的基础上将所有":"字符替换为"@"字符(不是全局替换,我可以使用条件,例如奇数或偶数行来确定当前行是否应该具有替代与否.),那么我怎么能实现这一点.

bash perl pipe

20
推荐指数
2
解决办法
2万
查看次数

cmake find_package(JNI)在Ubuntu 12.04 amd64中不起作用

我在Ubuntu 12.04 amd64上使用cmake 2.8.7.我系统中安装的OpenJDK JRE组件如下所示:

$ sudo dpkg --list | grep jdk
openjdk-6-jre   6b27-1.12.5-0ubuntu0.12.04.1   OpenJDK Java runtime, using Hotspot JIT
openjdk-6-jre-headless   6b27-1.12.5-0ubuntu0.12.04.1   OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-6-jre-lib   6b27-1.12.5-0ubuntu0.12.04.1   OpenJDK Java runtime (architecture independent libraries)
Run Code Online (Sandbox Code Playgroud)

但是,我没有使用OpenJDK JRE组件.我在"/usr/lib/jvm/jdk1.7.0_25"中手动安装了Oracle Java 7 JDK,并使用"update-alternatives"将"java"指向我安装的Oracle Java 7 JDK.我没有设置任何"JAVA_HOME","JAVA_BIN","CLASSPATH"环境变量和手动安装的Oracle Java 7 JDK似乎在Eclipse 4.3中运行正常.

问题是当我在cmake中使用"find_package(JNI)"并使用"message()"函数来显示JNI变量时,我得到以下结果:

Could NOT find JNI (missing:  JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH) 
JNI_FOUND = FALSE
JNI_LIBRARIES = /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libjawt.so;/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/libjvm.so
JAVA_INCLUDE_PATH = JAVA_INCLUDE_PATH-NOTFOUND
JAVA_INCLUDE_PATH2 = JAVA_INCLUDE_PATH2-NOTFOUND
JAVA_AWT_INCLUDE_PATH = JAVA_AWT_INCLUDE_PATH-NOTFOUND
JAVA_JVM_LIBRARY = /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/libjvm.so
JAVA_AWT_LIBRARY = /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libjawt.so
JNI_INCLUDE_DIRS …
Run Code Online (Sandbox Code Playgroud)

cmake

12
推荐指数
1
解决办法
2万
查看次数

我怎么知道Ubuntu 11.04中gcc,g ++/c ++的"默认包含目录","默认链接目录"和"默认链接库"?

对于以下3个编译案例:

gcc -o helloc hello.c                    (1)

g++ -o hellocpp hello.cpp                (2)

c++ -o hellocpp hello.cpp                (3)
Run Code Online (Sandbox Code Playgroud)

在每种情况下,我如何知道"默认包含目录","默认链接目录"和"默认链接库"?我在32位Ubuntu 11.04环境中使用gcc 4.5.2.

对于case(1),gcc是使用标准C库还是GNU C库?两个C库之间有区别吗?

比较情况(2)和(3),编译器使用的"默认链接库"有什么不同吗?他们使用的是标准C++库还是GNU C++库?两个C++库有什么区别?

提前感谢任何建议.

劳伦斯曾

c++ gcc

11
推荐指数
2
解决办法
2万
查看次数

"同步(this)"与"synchronized((BaseClass)this)"在Java中?

这是我之前问题的继承者,是否可以通过同步安全地访问此变量?

对于以下程序,

Class SubClassB extends SuperClassA {
     protected int c;

     public void inc() {
          synchronized (this) {
               c++;
          }
     }

     public void dec() {
          synchronized ( (SuperClassA) this) {
               c--;
          }
     }
}
Run Code Online (Sandbox Code Playgroud)

计数器"c"是否可以访问线程安全?我不确定在"dec()"方法中,SuperClassA是否将"this"引用为synchronized块的有效对象?如果是,两个同步块是否会锁定相同的"this"对象?(在我看来,"(SuperClassA)这个"不等于"这个")

这个奇怪的模拟代码来自以下现实生活中的例子,其中SuperClassA是一个不应被修改的基类,

Class SuperClassA {
     protected int c;

     public void dec() {
          synchronized (this) {
               c--;
          }
     }
}

Class SubClassB extends SuperClassA {

     public void inc() {
          synchronized (this) {
               c++;
          }
     }

     public void dec() {
          super.dec();
     }
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,SubClassB中的"dec()"方法调用它的超类的"dec()"方法,该方法执行对"this"对象的锁定,我认为该对象是"SuperClassA.this".如果SubClassB的"inc()"方法中的锁定对象与SubClassB的"dec()"方法中的锁定对象不完全相同,那么我想知道SubClassB中的继承计数器"c"可能不会被不同的线程安全地访问.我觉得在同步块中使用"this"引用有一些含糊之处.

在现实生活中的例子中,如果我希望SubClassB的计数器"c"是线程安全的,我是否需要在其"dec()"方法中再添加一个synchronized块,如下所示,

Class SubClassB extends …
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization

10
推荐指数
2
解决办法
1424
查看次数

Python - 如何使用NUL分隔行读取文件?

我通常使用以下Python代码从文件中读取行:

f = open('./my.csv', 'r')
for line in f:
    print line
Run Code Online (Sandbox Code Playgroud)

但是如果文件是由"\ 0"(而不是"\n")以行分隔的呢?是否有可以处理此问题的Python模块?

谢谢你的建议.

python nul

10
推荐指数
1
解决办法
4471
查看次数

如何从Qt 5.5 git源构建qtwebengine

我已按照本页上的说明从Git构建Qt 5,从源代码构建Qt 5.5.源位于"〜/ qt5_source_built/qt5",Qt 5.5构建的系统位于"〜/ qt5_source_built/qt5.5-build"中.我使用了以下配置选项:

~/qt5_source_built/qt5/configure -developer-build -opensource -no-gtkstyle -nomake examples -nomake tests
Run Code Online (Sandbox Code Playgroud)

然后使用"make -j4"构建qt-5.5系统.系统构建正常.

我使用CMake为Qt 5.5构建的系统开发应用程序.它适用于通常的情况(例如可以使用qtwebkit).但是,当我想在新应用程序上测试qtwebengine模块时,我发现在"〜/ qt5_source_built/qt5.5-build/qtbase"目录下似乎没有qtwebengine包含文件和库文件.

我试图使用不同的目标重新制作系统:

make all -j4

make module-qtwebengine -j4

make module-qtwebengine-all -j4
Run Code Online (Sandbox Code Playgroud)

但控制台一直在输出

... Nothing to be done for ...
Run Code Online (Sandbox Code Playgroud)

重新制作后,仍然无法在"〜/ qt5_source_built/qt5.5-build/qtbase"目录下找到qtwebengine include和库文件.

我注意到qtwebengine源文件似乎可以在"〜/ qt5_source_built/qt5/qtwebengine/src"中找到,但我无法使用"make"命令构建它.

我刚刚错过了构建目录下的qtwebengine include和库文件吗?如果没有,有谁知道如何使用这个Qt 5.5 git源构建qtwebengine?

谢谢你的任何建议.

qt qt5 qtwebengine

9
推荐指数
1
解决办法
6831
查看次数

使用"for"循环的Bash Shell列表文件

我使用以下Bash Shell脚本在当前目录下递归列出".txt"文件:

#!/bin/bash
for file in $( find . -type f -name "*.txt" )
do
  echo $file
  # Do something else.
done
Run Code Online (Sandbox Code Playgroud)

但是,当前目录下的某些".txt"文件名称中包含空格,例如"my testing.txt".列表已损坏,例如"my testing.txt"列为

my
testing.txt
Run Code Online (Sandbox Code Playgroud)

似乎"for"循环使用"空格"(空格,\n等)来分隔文件列表,但在我的情况下,我只想使用"\n"来分隔文件列表.

有什么办法可以修改这个脚本来达到这个目的.任何的想法.

提前致谢.

bash for-loop

7
推荐指数
2
解决办法
2万
查看次数

sed或awk可以使用NUL字符作为记录分隔符吗?

我有一个NUL分隔输出来自以下命令:

some commands | grep -i -c -w -Z 'some regex'
Run Code Online (Sandbox Code Playgroud)

输出包含以下格式的记录:

[file name]\0[pattern count]\0
Run Code Online (Sandbox Code Playgroud)

我想使用文本操作工具(如sed/awk)将记录更改为以下格式:

[file name]:[pattern count]\0
Run Code Online (Sandbox Code Playgroud)

但似乎sed/awk通常只处理由"换行符"字符分隔的记录.我想知道如何使用sed/awk实现我的目的,或者如果sed/awk无法处理这种情况,我应该使用其他Linux工具.

谢谢你的任何建议.

劳伦斯

awk sed nul

6
推荐指数
2
解决办法
7327
查看次数