小编Pav*_*ath的帖子

如何打印ld(链接器)搜索路径

打印由ld按其搜索顺序查看的搜索路径的方法是什么.

linux linker gcc ld

141
推荐指数
5
解决办法
15万
查看次数

Unix/Linux中特定文件的递归副本?

我需要*.jar从目录及其所有子目录中复制所有文件.我怎么能在UNIX/Linux终端上做到这一点?命令cp -r *.jar /destination_dir不起作用.

unix linux bash shell cp

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

哪个更有效,基本的互斥锁或原子整数?

对于像计数器那样简单的东西,如果多个线程将增加数量.我读到互斥锁会降低效率,因为线程必须等待.所以,对我来说,一个原子计数器将是最有效的,但我在内部读到它基本上是一个锁?所以我想我很困惑如何比另一个更有效率.

multithreading operating-system mutex pthreads atomic

53
推荐指数
5
解决办法
3万
查看次数

Android:takePicture()没有声音

我正在使用takePicture()Camera课程中的方法.拍照,但它没有声音!我的客户想要Android制作的默认点击声.

我见过其他线程,似乎问题在于禁用声音,而不是相反!为什么我的应用程序没有发出咔嗒声?

camera android default

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

/ dev/mem的访问权限

我有一系列问题/dev/mem:

  1. 网上的很多文章似乎都被/dev/mem称为网关"Physical RAM".但如果我是对的,那么处理器/dev/mem的网关"Physical Address Space"可能包括许多硬件外设的控制寄存器,而不仅仅是RAM?如果我错了,请纠正我!

  2. 为了防止攻击者滥用/dev/mem和更改内核内存,CONFIG_STRICT_DEVMEM需要启用一个标志,以防止用户应用访问超过1MB的物理地址空间.我检查了我的PC(Ubuntu)上的配置文件,发现了CONFIG_STRICT_DEVMEM = y.我写了一个程序试图读取超过1 MB的物理内存,我能够阅读!没有分段错误或任何Operation NOT Permitted错误.这怎么可能?

我的程序大致如下:

fd = open ( "/dev/mem", O_RDWR);
ptr = (int*) mmap(0, MAP_SIZE, PROT_READ, fd, myAddress & (~MAP_MASK));
printf("%d", *ptr);
Run Code Online (Sandbox Code Playgroud)

linux memory linux-kernel

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

如何在linux内核空间中读取环形缓冲区?

我正在编写一个Linux字符驱动程序,可以在用户空间中打印系统日志.正如命令'dmesg'那样.我已经了解到,使用'printk'打印的所有日志都将被发送到名为ring buffer的空间.所以我有问题:

  1. 内核空间里面有环形缓冲区吗?
  2. 如果是这样,我如何读取内核空间内的环形缓冲区?(我试过阅读dmesg.c的源代码.但它没有帮助.)

linux logging kernel circular-buffer linux-kernel

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

数据包套接字未接收自定义协议ID的数据

我试图发送和接收类型的数据包SOCK_RAWPF_SOCKET使用同一台机器上自己的自定义协议的id.这是我的发送者和接收者样本代码 -

sender.c

#include<sys/socket.h>
#include<linux/if_packet.h>
#include<linux/if_ether.h>
#include<linux/if_arp.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define CUSTOM_PROTO 0xB588

int main ()
{
    int sockfd = -1;
    struct sockaddr_ll dest_addr = {0}, src_addr={0};
    char *buffer = NULL;
    struct ethhdr *eh;

    sockfd = socket(PF_PACKET, SOCK_RAW, htons(CUSTOM_PROTO) );

    if ( sockfd == -1 )
    {
        perror("socket");
        return -1;
    }
    buffer = malloc(1518);
    eh = (struct ethhdr *)buffer;

    dest_addr.sll_ifindex  = if_nametoindex("eth0");
    dest_addr.sll_addr[0]  = 0x0;
    dest_addr.sll_addr[1]  = 0xc;
    dest_addr.sll_addr[2]  = 0x29;
    dest_addr.sll_addr[3]  = 0x49;
    dest_addr.sll_addr[4]  = …
Run Code Online (Sandbox Code Playgroud)

c sockets linux

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

I2C_SLAVE ioctl目的

我正在编写i2c使用通用linux i2c驱动程序实现简单读/写功能的代码linux/i2c-dev.h

我很困惑ioctl:I2C_SLAVE

内核文档说明如下:

您可以使用read(2)和write(2)调用执行普通的i2c事务.您不需要传递地址字节; 相反,在尝试访问设备之前,请通过ioctl I2C_SLAVE进行设置

但是,我正在使用ioctl I2C_RDWR我再次设置从属地址的地方i2c_msg.addr.

内核文档还提到了以下内容:

一些ioctl()调用用于管理任务,由i2c-dev直接处理.示例包括I2C_SLAVE

所以必须使用ioctl I2C_SLAVE?如果是这样,我只需要设置一次或每次执行读写操作?

如果我有一个i2c设备,我可以在设备上测试代码并且不会打扰你们,但不幸的是我现在没有.

谢谢您的帮助.

linux driver i2c

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

调度程序代码在什么上下文中运行?

schedule()调用调度程序代码有两种情况 -

  1. 当进程自愿调用时 schedule()

  2. 定时器中断调用 schedule()

在案例2中,我认为schedule()在中断上下文中运行,但第一种情况呢?它是在调用它的进程的上下文中运行的吗?

还有更多场景可以调用schedule()吗?

linux scheduling interrupt linux-kernel

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

atoi是一个标准功能.但itoa不是.为什么?

为什么这个区别?我已经itoa陷入了可怕的问题,假设进入stdlib.h并最终将自定义版本itoa与不同的原型相关联,从而产生一些疯狂的错误.

那么,为什么itoa不是一个标准功能呢?它出什么问题了?为什么标准偏向其孪生兄弟atoi

c standards posix function itoa

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