小编Pav*_*ath的帖子

如何同步内核时间和logcat时间?

我正在开发基于Linux内核的Android手机.我kmsg用于内核日志和adb logcat -v time平台日志.问题是内核日志显示时间,0.000000并且logcat从系统时间开始显示(例如,如果手机上的时间是10.43.00,它将显示此时的第一个日志)

现在我无法比较这两个日志中的事件,因为时基(参考)不同.任何人都可以指出如何同步这两次?

linux android linux-kernel adb android-logcat

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

使用CLOCK_MONOTONIC的Android(Linux)正常运行时间

根据Android Developer Reference, uptimeMillis()返回自启动以来的毫秒数,不计入深度睡眠所花费的时间.我检查了uptimeMillis()我的代码中的实现, 它大致是这样的 -

struct timespec t;
t.tv_sec = t.tv_nsec = 0;
clock_gettime(CLOCK_MONOTONIC, &t);
return (int64_t)(t.tv_sec)*1000000000LL + t.tv_nsec;
Run Code Online (Sandbox Code Playgroud)

据我所知,CLOCK_MONOTONIC从一些未指明的点线性计算,包括睡眠时间.

以下是我的疑惑 -

  1. 如果CLOCK_MONOTONIC包括睡眠时间,为什么 uptimeMillis()不考虑它呢?如果我的理解是错误的并且CLOCK_MONOTONIC不考虑睡眠,那么我应该使用什么来获得系统正常运行时间,包括睡眠?

  2. 什么是深度睡眠?CPU闲置是否称为深度睡眠?

  3. Linux 中未指定点的价值是多少?你可以在这个时钟启动的代码中指出吗?

linux time android linux-kernel

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

如何在 Linux 中打开一个程序的多个实例

例如,要打开多个gedit编辑器实例,我编写了这样的 shell 脚本-

gedit&
gedit&
gedit&
gedit&
Run Code Online (Sandbox Code Playgroud)

但是在我运行 shell script 后./example.sh,我只能找到一个 gedit 实例!我什至使用了&运算符,因此外壳不会等待一个实例完成。我仍然看不到gedit.

我也直接从命令提示符尝试。如果我只是gedit&在命令行上输入,它会显示1906(这是新创建gedit进程的 PID ),启动一个新gedit实例并再次返回提示。当我gedit&在命令行上输入时,它显示了1909这次,但没有新的 gedit 实例!而且我PID 1909在系统监视器中也找不到任何进程。这个新流程去哪儿了?

发生的特定于gedit? 如果是这样,创建程序的多个实例时的通用行为是什么?

linux bash shell command-line

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

Linux内核头文件的组织

当我在系统调用上做一些阅读时,我搜索了syscalls.h在LXR中查找头文件.搜索结果使我感到困惑.有十几个syscalls.h来自目录下的文件arch/_arch_name_/include/asm.这些都可以,它们是特定于体系结构的定义或其他需要的东西.现在的问题是,为什么我们有两个不同的syscalls.h下两个头include/linuxinclude/asm-generic

另外,我想知道include/linux标题是什么以及include/asm-generic标题是什么.他们如何区分彼此?有两个单独的头文件夹背后的逻辑是什么?它们如何相互关联?

谢谢

linux kernel linux-kernel

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

如何在 C 中接收未命名结构作为函数参数?

昨天在解决这个问题时,我发现了一个奇怪的情况,即传递和接收未命名的结构作为函数参数。

例如,如果我有这样的结构,

int main ()
{
    struct {
        int a;
    } var;

    fun(&var);
}
Run Code Online (Sandbox Code Playgroud)

现在,原型应该是什么fun?我如何将该结构用作函数中的结构(指针)fun

c struct function-parameter function-prototypes

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

fork()打印前的语句两次

我正在试验fork()并重新指导检查父母的重新指示是否也适用于孩子.我写了以下简单的程序

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main ()
{
    freopen( "error.txt", "w+t", stdout ); // From now on, stdout = error.txt
    printf (" ERROR!  WHY DONT U UNDERSTAND?\n");
    if ( fork() == 0 ) 
    {   
        printf(" I AM CHILD\n");
        exit(0);
    }   
    else-
    {   
        printf (" EITHER I AM A PARENT OR SOMETHING GOT SCREWED\n");
    }   


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

error.txt我得到的输出()是

ERROR!  WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR!  WHY DONT U UNDERSTAND? …
Run Code Online (Sandbox Code Playgroud)

c fork stdout buffering io-redirection

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

ARM处理器上的BP寄存器(帧指针)相当于什么?

在intel平台上,BP用于指向堆栈帧的开头并访问参数[bp+0x??]和局部变量[bp-0x??].

ARM中使用哪个寄存器?或者,仅基于SP的寻址?

[我没有自行编译和反汇编的基础设施.参考AAPCS对我没有帮助]

assembly arm calling-convention

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

如何在python中将地址解引用为整数?

我有一个类似的地址0x6041f0。我知道那里有一个整数。在C语言中,我只要完成操作*(int *)0x6041f0即可获取该地址上存在的整数值。

如何在Python中实现相同?

PS:我正在编写使用该gdb模块的Python脚本。实际调试的程序是C ++。因此,需要进行许多底层操作。

python typecast-operator

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

在bash中的并行进程之间添加等待

我有一个bash脚本可将数据上传到站点。我的上传速度越来越慢,因此我开始使用xargs和-N1并行运行它,同时运行5个。

但是,问题是服务器是否要求我解决一次验证码,如果我一次运行5次,而一次运行1次则可以正常工作。

我认为这是因为所有进程都完全在同一时间启动,因此我被标记了。

无论如何,这就是问题所在,我有什么办法可以在xargs / gnu并行启动过程之间添加等待时间(例如1秒)吗?

我唯一想出的就是使用pgrep脚本| wc -1来计算脚本实例,并休眠该秒数。

但是,这实际上不是最佳选择,是否有更好的方法呢?

linux parallel-processing bash shell xargs

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

什么是签名的char指针和未签名的char指针之间的工作差异?

我能理解一个signed char和一个之间的区别unsigned.但是,相应类型的指针在其操作中是否相同?Cos sizeof(char)sizeof(unsigned char)总是一样的(或者有任何反例?)

对于指针,只有数据类型的大小才重要.如果我使用char *unsigned char *互换,是否有任何陷阱?

我觉得这些帖子很有用:(

unsigned char和char指针之间的区别

为什么短*而不是char*为字符串?char*和unsigned char*之间的区别?

c unsigned pointers sizeof char

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