小编jxh*_*jxh的帖子

os x进程状态UE

我已经运行了无法杀死的进程.这是我的EyeTV应用程序,这里是'ps aux'所说的:

cb0      87583   1,0  3,4   812796 144236   ??  UE   21Nov09 2638:11.45 [.....]/EyeTV
Run Code Online (Sandbox Code Playgroud)

过程状态真的很奇怪,因为我以前从未见过UE.该联机帮助表告诉我


U表示在不间断等待中标记进程

E表示该过程正试图退出


但我无法杀死这个过程.任何想法我怎么能强迫它退出?

附加信息:以下任何一项法规均无效:

  • 杀死-S KILL
  • 杀了-S QUIT
  • 杀-2
  • 杀了-9

macos state process

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

斐波那契数列 - 递归求和

好吧,我最初编写了一个简单的代码,根据用户输入从系列中返回斐波纳契数.

n = 5将产生3 ..

static int fibonacci(int n) {
        if (n == 1)
            return 0;
        else if (n == 2)
            return 1;
        else
            return (fibonacci(n - 1) + fibonacci(n - 2));
    }
Run Code Online (Sandbox Code Playgroud)

我正在考虑修改代码以返回系列的总和,而不是仅仅返回系列中的值,并且在尝试执行总和时我不小心将1添加到return语句中,令我惊讶的是,它正确地返回了总和.

对于n = 5,以下代码将返回7.

我不确定这是否是计算总和的正确方法......

如果我加1,我仍然无法弄清楚该系列的总和是如何工作的.有人可以解释一下吗?

static int fibonacci(int n) {
    if (n == 1)
        return 0;
    else if (n == 2)
        return 1;
    else
        return (fibonacci(n - 1) + fibonacci(n - 2)+(1));
}
Run Code Online (Sandbox Code Playgroud)

编辑:

对于斐波那契系列.. 0,1,1,2,3,5,8,13,21,34,55,89,144 ....

我尝试了一些随机的n

N = 13

该函数返回376

0 + 1 + …

java math recursion fibonacci

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

获取/释放通过[] -operator访问的原子变量的语义

假设一个原子变量数组和一个类,它通过重载类' []-operator来返回对该位置的原子变量的引用来调节对该数组的访问idx:

class MyClass {
public:
    MyClass()
    {
        //initalize every array element with nullptr
        for (auto& it : array) {
            it = nullptr;
        }
    }
    std::atomic<int*>& operator[](const size_t idx)
    {
         //there is some more code here, doing basic safety checks,...
         return array[idx];
    }
private:
    std::array<std::atomic<int*>, 1000> array;

}
Run Code Online (Sandbox Code Playgroud)

我们可以访问这样的元素array:

MyClass foo();
int *a = foo[0];
int b = 3;
foo[1] = &b
Run Code Online (Sandbox Code Playgroud)

请注意,默认情况下,对此类元素的任何访问都将使用memory_order_seq_cst.要更改强制内存顺序,可以执行以下操作:

int *a = foo[0].load(memory_order_acquire);
foo[1].store(&b, memory_order_release);
Run Code Online (Sandbox Code Playgroud)

但是,如何更改[]-operator的实现,以便memory_order_acquire …

c++ arrays shared-memory c++11

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

测试实时操作系统的硬度

我有一个嵌入式设备(Technologic TS-7800),宣传实时功能,但没有说"硬"或"软".当我等待制造商的回复时,我认为自己测试系统不会有什么坏处.

在实时/确定性行为(延迟和抖动)方面,有哪些既定程序可以确定特定设备的"硬度"?

在大学期间,我可以使用一些非常整洁的硬件(良好的示波器和信号发生器),所以我认为我不会在测试设备,只是专业知识方面遇到任何问题.

embedded real-time hard-real-time

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


二维数组的初始化数组

如何在C++中初始化二维数组的数组(在下面的代码中定义)?

#include <iostream>
#include <array>

typedef int arr3by6Int[3][6];
typedef arr3by6Int arr3xarr3by6Int[3];

void print3by6(arr3by6Int arr)
{
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 6; j++)
        {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }
}
int main(int argc, char const *argv[])
{

    arr3by6Int a = {
        {1,2,3,4,5,6},
        {0,0,0,0,0,0},
        {2,2,2,2,2,2}
    };

    arr3by6Int b = {
        {2,2,3,4,5,6},
        {0,0,0,0,0,0},
        {2,2,2,2,2,2}
    };

    arr3by6Int c = {
        {3,2,3,4,5,6},
        {0,0,0,0,0,0},
        {2,2,2,2,2,2}
    };

    arr3xarr3by6Int d = { …
Run Code Online (Sandbox Code Playgroud)

c++ arrays c++11

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

Gdb重复"没有加载符号表"

好吧,尽管我尝试了很多解决方案,但我还是无法让gdb工作.

我的makefile完成cc -g _________并生成myfilesys

>gdb myfilesys
(gdb) break my_linked_list.c:90
No symbol table is loaded, use the "file" command...
(gdb) file myfilesys
Reading symbols from /home/jsexton/Work/cs492/hw3/myfilesys...(no 
debugging symbols found)...done.
(gdb) break my_linked_list.c:90
No symbol table is loaded, use the "file" command...
Run Code Online (Sandbox Code Playgroud)

有谁能看到这个问题?我的程序被分成30个.c文件,所以我确实需要使用文件:[行号]的东西.

c gdb symbols makefile

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

宏定义需要多少内存空间?

我的代码中有很多未使用的宏.所以,我想知道..如果一个宏未被使用,它会占用你程序中的内存空间吗?

我拥有的宏类型只是基本类型.例:

#define TEST_ID 0
Run Code Online (Sandbox Code Playgroud)

c macros

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

为什么用-fpic和-pie编译的程序有重定位表?

如果使用以下命令编译一个简单的程序:

arm-none-eabi-gcc -shared -fpic -pie --specs=nosys.specs simple.c -o simple.exe
Run Code Online (Sandbox Code Playgroud)

并使用以下命令打印重定位条目:

arm-none-eabi-readelf simple.exe -r
Run Code Online (Sandbox Code Playgroud)

有一堆重定位条目部分(见下文)。

由于 -fpic / -pie 标志会导致编译器生成位置无关的可执行文件,因此我天真的(并且显然不正确)假设不需要重定位表,因为加载程序可以将可执行映像放置在任何地方而不会出现问题。那么为什么那里有一个重定位表,这是否表明代码实际上不是位置无关的?

Relocation section '.rel.dyn' at offset 0x82d4 contains 37 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
000084a8  00000017 R_ARM_RELATIVE   
000084d0  00000017 R_ARM_RELATIVE   
00008508  00000017 R_ARM_RELATIVE   
00008510  00000017 R_ARM_RELATIVE   
0000855c  00000017 R_ARM_RELATIVE   
00008560  00000017 R_ARM_RELATIVE   
00008564  00000017 R_ARM_RELATIVE   
00008678  00000017 R_ARM_RELATIVE   
0000867c  00000017 R_ARM_RELATIVE   
0000870c  00000017 R_ARM_RELATIVE   
00008710  00000017 R_ARM_RELATIVE   
00008714  00000017 R_ARM_RELATIVE   
00008718  00000017 R_ARM_RELATIVE   
00008978  00000017 R_ARM_RELATIVE   
000089dc  00000017 R_ARM_RELATIVE   
000089e0 …
Run Code Online (Sandbox Code Playgroud)

c gcc position-independent-code

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

如何编写用于动态加载的MPI包装器

由于MPI不提供二进制兼容性,仅提供源兼容性,因此我们被迫将求解器源代码交付给客户,以使他们将求解器与首选版本的MPI一起使用。好了,我们到达了无法再提供源代码的地步。

因此,我正在研究围绕MPI调用创建包装器的方法。我们的想法是为我们提供存根函数的标头,用户将编写实现,从中创建一个动态库,然后我们的求解器将在运行时加载它。

但是解决方案不是“优雅”的,而且容易出错。由于有些实struct参(例如MPI_Request)的struct定义可能因一个MPI实现而异,因此我们需要接受(void*)许多存根实参。另外,如果一个MPI到另一个MPI的参数数量可以不同(我不确定是否可以保证不会发生),那么使用唯一的方法就是使用var_args

//header (provided by us)
int my_stub_mpi_send(const void buf, int count, void* datatype,
        int dest, int tag, void* comm);

//*.c (provided by user)
#include <my_stub_mpi.h>
#include <mpi.h>
int my_stub_mpi_send(const void buf, int count, void* datatype,
        int dest, int tag, void* comm)
{
    return MPI_Send(buf, count, *((MPI_Datatype) datatype),
            dest, tag, ((MPI_Comm) comm));
}
//Notes: (1) Most likely the interface will be C, not C++,
//           unless I can make …
Run Code Online (Sandbox Code Playgroud)

c c++ loading dynamic mpi

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