小编for*_*all的帖子

如果close(2)与EIO失败,文件描述符是否仍会被删除?

如果close(2)系统调用与EIO失败,文件描述符是否仍会被删除?

如果是,通过稍后重试是否无法处理虚假IO错误?如果不是,应该如何防止文件描述符泄漏?

c unix posix system-calls

19
推荐指数
1
解决办法
1731
查看次数

在Ubuntu 11.10中使用gcc进行编译时对openssl函数的未定义引用

在Ubuntu 11.10 x86_64中,我有这个简单的test.c文件:

#include <openssl/ssl.h>

int main() {
    SSL_library_init();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么用gcc编译失败?

$ gcc -lssl -lcrypto test.c
/tmp/ccqL6lRY.o: In function `main':
test.c:(.text+0x5): undefined reference to `SSL_library_init'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

使用clang进行编译并生成可运行的可执行文件:

$ clang -lssl -lcrypto test.c
$ ldd a.out 
linux-vdso.so.1 =>  (0x00007fffa93e1000)
libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f234a24f000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f2349ea0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2349b00000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f23498fc000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f23496e4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f234a4c4000
Run Code Online (Sandbox Code Playgroud)

c ubuntu gcc openssl

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

java CMS gc日志中"真实","用户"和"sys"的含义是什么?

对于以下Java版本:

OpenJDK版本"1.6.0"
OpenJDK运行时环境(版本1.6.0-b23)
OpenJDK 64位服务器VM(版本20.0-b11,混合模式)

使用以下GC标记:

-verbose:gc
-XX:+ UseConcMarkSweepGC
-XX:+ CMSClassUnloadingEnabled
-XX:+ PrintGCDetails
-XX:+ PrintGCDateStamps

我们得到如下日志行:

2012-11-09T16:46:53.438-0100:[CMS-concurrent-mark:4.039/4.060 secs] [次:用户= 4.09 sys = 35.05,real = 4.06 secs]

最初的"4.039/4.060秒"应根据https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs表示并发标记总共需要4.039秒的cpu时间和4.060秒的挂起时间(包括其他线程的收益率) ).

但是用户,系统和实际值在这里意味着什么?

java garbage-collection jvm

11
推荐指数
1
解决办法
6213
查看次数

为什么在build.gradle中有针对Android项目的自定义"干净"任务?

在Android Studio(版本2.1)中创建新项目时,根build.gradle文件具有以下任务:

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

我注意到一些Android项目没有这个自定义任务,并使用默认的gradle clean任务.没有上述自定义清理任务有什么缺点?

android gradle android-studio

7
推荐指数
1
解决办法
1702
查看次数

6
推荐指数
1
解决办法
88
查看次数

Terminfo smkx和应用程序光标键与应用程序键盘

XTerm控制序列指定以下键序列:

CSI ? 1 h  ? Application Cursor Keys (DECCKM)
CSI ? 1 l  ? Normal Cursor Mode (DECOM)
CSI ? 66 h ? Application keypad (DECNKM)
CSI ? 66 l ? Numeric keypad (DECNKM)
Run Code Online (Sandbox Code Playgroud)

TERMINFO源格式有如下条目:

Variable: keypad_xmit
Capname: smkx
Termcap: ks
Description: Put terminal in "keypad-transmit" mode
Run Code Online (Sandbox Code Playgroud)

但是xterm的terminfo实际上是说smkx=\E[?1h\E=,这似乎让我感到困惑(smkx应该影响键盘,而不是光标键,对吗?)。我在这里想念什么?

terminal xterm tty termcap terminfo

5
推荐指数
2
解决办法
2076
查看次数

Android:<provider>里面"不允许使用元素intent-filter"?

http://developer.android.com/guide/topics/providers/document-provider.html#manifest上显示了如何在清单中注册自定义文档提供程序:

<manifest... >
    ...
    <uses-sdk
        android:minSdkVersion="19"
        android:targetSdkVersion="19" />
        ....
        <provider
            android:name="com.example.android.storageprovider.MyCloudProvider"
            android:authorities="com.example.android.storageprovider.documents"
            android:grantUriPermissions="true"
            android:exported="true"
            android:permission="android.permission.MANAGE_DOCUMENTS"
            android:enabled="@bool/atLeastKitKat">
            <intent-filter>
                <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
            </intent-filter>
        </provider>
    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

此处需要此<intent-filter>元素,但Android Studio会抱怨:

此处不允许元素intent-filter

并且提供者元素的文档似乎也表明了这一点:

CAN CONTAIN:
<meta-data> 
<grant-uri-permission> 
<path-permission>
Run Code Online (Sandbox Code Playgroud)

这是Android Studio和文档错误还是我错过了什么?

android android-manifest android-xml android-studio storage-access-framework

5
推荐指数
1
解决办法
1532
查看次数

如何使用 minSdkVersion 21 从矢量可绘制启动器图标生成 png?

我有一个 minSdkVersion=21 的应用程序,它现在使用矢量绘图作为启动器图标。

Google Play 拒绝该应用程序

You need to check the icon inside your APK because it is not valid
Run Code Online (Sandbox Code Playgroud)

因为它需要 PNG 格式的启动器图标。

我想在构建过程中为启动器图标生成 PNG 文件,就像我将 minSdkVersion 降低到 20 一样(但我不能这样做,因为该应用程序与 20 或更早版本不兼容)。这可能吗?

编辑:为了澄清,它在 minSdkVersion < 21 时起作用,因为 gradle 负责生成矢量可绘制对象的 png 版本。但是,当 minSdkVersion >= 21 时,gradle 会按原样保留矢量可绘制对象,这对于启动器图标不起作用。问题是是否可以让 gradle 为启动器图像构建 png 版本的矢量绘图,即使在 minSdkVersion >= 21 上也是如此。

android google-play android-studio android-gradle-plugin android-vectordrawable

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