小编pyt*_*nic的帖子

如何在共享对象库中共享变量

我正在创建一个共享对象库,它将与我的程序LD_PRELOADed.在该共享库中,我还想使用程序中的一些变量.声明这些变量的方式是什么?请注意,共享对象库是与我的程序分开编译的.

c linux gcc shared-objects

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

在不修改内核的情况下拦截系统调用的最小开销方式

我所知道的拦截系统调用的方法如下。

  1. 使用ptrace,但这似乎有很高的开销。据我所知,像strace这样的工具也在内部使用ptrace。
  2. 使用内核模块来改变系统调用表,但据我所知,这种方法在后来的linux内核中不再可行。
  3. 使用 LD_PRELOAD。但是,如果例如您直接进行系统调用而不使用该系统调用的一些包装库函数,这将不起作用。

所以你看到上面提到的所有方法都有缺陷。所以我的问题是在不修改内核和最小开销的情况下拦截系统调用的方法是什么。

c linux gcc x86-64 system-calls

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

ranlib 和静态库

我正在尝试链接我创建的静态库,但出现此错误。

libmine.a: could not read symbols: Archive has no index; run ranlib to add one
Run Code Online (Sandbox Code Playgroud)

我试图做ranlib libmine.a但没有任何改变,它仍然给出同样的错误。我怎么解决这个问题?

c linux gcc makefile x86-64

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

如何通过makefile包含头文件

我知道有一个标志可以在makefile中使用,在所有正在编译的文件中包含一个头文件,就像有一个-D标志包含一个define.包含头文件的确切标志.我不记得了.

c linux gcc makefile

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

条件表达式总是在C中评估为0或1吗?

条件表达式,例如涉及&&||的表达式 ,他们总是评价为0或1吗?或者对于真实情况,1以外的数字是可能的吗?我问,因为我想分配一个像这样的变量.

int a = cond1 && cond2;
Run Code Online (Sandbox Code Playgroud)

我想知道我是否应该做以下事情.

int a = (cond1 && cond2)? 1:0;
Run Code Online (Sandbox Code Playgroud)

c logical-operators semantics

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

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

根据进程ID确定进程是否存在

我想在我的程序中知道是否存在具有特定ID的进程.我实现了以下函数来实现它,它检查是否/proc/<PID>/maps存在.但是,我注意到即使我杀了一个具有给定ID的函数,这个函数仍然会返回1.有没有更好的方法来实现我想要做的事情,如果不是这个代码有什么问题,如果有的话,为什么当它应该返回0时它返回1.

int proc_exists(pid_t pid)
{
    stringstream ss (stringstream::out);

    ss << dec << pid;

    string path = "/proc/" + ss.str() + "/maps"; 

    ifstream fp( path.c_str() );

    if ( !fp )
        return 0;
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

c++ linux gcc

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

如何在LLVM中打印到字符串

我想将LLVM中的指令打印到字符串而不是屏幕.我I->print( errs() )用来打印到屏幕上.我怎样才能将指令放在字符串中?

c++ compiler-construction llvm

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

如何告诉gcc不使用内置函数

我正在尝试使用LD_PRELOAD覆盖一些标准库函数.但是,我注意到我的版本从未被调用过某些函数,例如,gettimeofday一个函数.我怀疑gcc使用内置版本来实现其中一些功能.

有没有办法告诉gcc不要使用内置的标准库函数.

c linux gcc

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

Spark执行程序如何运行多个任务?

例如,如果执行程序的数量是40,但任务数是80,这意味着每个执行程序将并行运行两个任务.此外,我的函数(执行哪些任务)不是正常的函数,但我在其中调用程序.因此,每项任务实际上需要几分钟才能完成.所以,我的问题是,Spark如何管理它?这些任务会共享执行程序的JVM吗?核心数量如何,它将在这两个任务之间分配?如果不希望这两个任务同时运行,但是以循环方式执行它们,也就是说,运行第一个任务与所有执行程序的核心,并且只有在完成后运行第二个任务,该怎么办?

hadoop scala hadoop-yarn apache-spark

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