小编g.r*_*ket的帖子

我的属性过于活泼,我该怎么办?

在Linux设备驱动程序中,创建sysfs属性probe过于活泼 - 特别是,它遇到了与用户空间的竞争条件.建议的解决方法是将属性添加到各种默认属性组,以便在探测之前自动创建它们.对于设备驱动程序,struct device_driver包含const struct attribute_group **groups此目的.

但是,在Linux 3.11中struct attribute_group只有二​​进制属性的字段.对于较旧的内核(特别是3.4),设备驱动程序如何在探测之前创建sysfs二进制属性?

race-condition linux-device-driver linux-kernel sysfs

25
推荐指数
1
解决办法
633
查看次数

在Java中禁用System.out以获得速度

我正在用java编写一个模拟重力的程序,在其中我有一堆日志语句(到System.out).我的程序运行速度很慢,我认为日志记录可能是其中一部分原因.有没有办法禁用System.out,以便我的程序在打印时不会变慢,或者我是否必须手动浏览并注释/取消注释每个程序以启用/禁用调试语句?任何帮助,将不胜感激.

java system.out

14
推荐指数
3
解决办法
1万
查看次数

如何在rodata中初始化灵活数组并创建指向它的指针?

在C中,代码

char *c = "Hello world!";
Run Code Online (Sandbox Code Playgroud)

存储Hello world!\0在rodata中,并c使用指向它的指针进行初始化。除了字符串以外,我该如何处理?

具体来说,我正在尝试定义自己的字符串类型

typedef struct {
   size_t Length;
   char Data[];
} PascalString;
Run Code Online (Sandbox Code Playgroud)

然后想要某种宏,以便我可以说

const PascalString *c2 = PASCAL_STRING_CONSTANT("Hello world!");
Run Code Online (Sandbox Code Playgroud)

并且具有相同的行为,即\x0c\0\0\0Hello world!存储在rodata中,并c2使用指向它的指针进行初始化。

我尝试使用

#define PASCAL_STRING_CONSTANT(c_string_constant) \
    &((const PascalString) { \
        .Length=sizeof(c_string_constant)-1, \
        .Data=(c_string_constant), \
    })
Run Code Online (Sandbox Code Playgroud)

正如这些 问题中所建议的那样,但它不起作用,因为它Data是一个灵活的数组:我收到了错误error: non-static initialization of a flexible array member(对于gcc,clang给出了类似的错误)。

这在C中可能吗?如果是这样,PASCAL_STRING_CONSTANT宏将是什么样?

澄清

对于C字符串,以下代码块永远不会将字符串存储在堆栈中:

#include <inttypes.h>
#include <stdio.h>

int main(void) {
    const char *c = "Hello …
Run Code Online (Sandbox Code Playgroud)

c flexible-array-member storage-duration

8
推荐指数
1
解决办法
275
查看次数

检查“read”是否会在不消耗任何数据的情况下返回 EOF

我有一个 C 程序,它通过 (Linux) 管道从另一个程序接收数据。如果在写入任何数据之前关闭管道,我希望程序的行为有所不同。

执行此操作的自然方法是尝试从管道中读取并检查是否得到EOF,但这会消耗管道中的一些数据(如果有可用的数据),并且(据我所知)无法将数据“放回” “在管道中。

我想要检查管道是否为空的程序部分离我处理数据的地方很远,所以我宁愿不必处理保存第一次读取的数据直到那时。

有没有什么方法可以检查管道是否为空(read将返回EOF)而不消耗任何数据(如果管道不为空)?

注意:如果管道尚未写入或关闭,我确实希望阻止此操作。

c linux posix pipe

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

在strings.xml中使用long值时,Lint给出"格式错误类型"

我的项目在strings.xml中使用字符串声明,类似于:

<string name="file_size">File Size (%1$dMB)</string>
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我正在使用

getResources().getString(R.string.file_size, getFileSize());
Run Code Online (Sandbox Code Playgroud)

其中getFileSize()返回long.林特给我这个错误:

"在file_size中格式化参数'#1'的参数类型错误:转换为'd',接收时间长(方法调用中的参数#2)"

这里发生了什么?Android文档说:

在此输入图像描述

java android lint

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

Linux字符设备 - 如果读取缓冲区太小,该怎么办?

我正在创建一个创建角色设备的linux设备驱动程序.它在读取时返回的数据在逻辑上分为16个字节的单位.

我计划通过返回许多适合读缓冲区的单元来实现这个除法,但是我不知道如果读缓冲区太小(<16字节)该怎么办.

我该怎么办?或者,有没有更好的方法来实现我想要代表的分工?

linux linux-device-driver linux-kernel android-kernel

4
推荐指数
1
解决办法
339
查看次数

如何使用按钮单击滑动片段

我有两个片段和一个MainActivity类.一切正常,但我想用onClick按钮滑动片段.例如,如果我单击片段A上的按钮,它将滑动到片段B.我在哪里需要添加代码?在MainActivity或Fragments中?

A:

package com.example.mytesttabandsweeper;



import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;



public class Fragment_A extends Fragment implements OnClickListener {
    TextView wynik;
    Button przycisk;
    EditText procent,cena;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View v =  inflater.inflate(R.layout.fragment_a,  container, false);

        return v;
    }

}
Run Code Online (Sandbox Code Playgroud)

B:

package com.example.mytesttabandsweeper;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle; …
Run Code Online (Sandbox Code Playgroud)

java android swipe android-fragments android-viewpager

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