小编She*_*fer的帖子

为什么我们需要mktemp?

我不明白mktemp临时文件的功能和意义.

说touch xyz和之间有什么区别mktemp xyz(除了mktemp会创建一些附加了xxx的文件并且有600个权限的事实?)

请澄清.

linux filesystems shell

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

SSH -X和ssh -Y之间的区别

我通过运行这样的代码来SSH到服务器:

ssh serverUser@serverIP "./runServer" &
Run Code Online (Sandbox Code Playgroud)

在脚本的下一行,当我在客户端启动VM并在其上写入startX时,它说: X Error of failed request: Bad Window.

在查找此错误后,我通过使用"Y"转发进行sshing解决了这个问题.

ssh -Y serverUser@serverIP "./runServer" &
Run Code Online (Sandbox Code Playgroud)

我无法理解X和Y转发是否是相同的概念 - 以及有多少这样的X,YZ转发是可能的?

谢谢.

ssh xterm

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

在Windows上的VirtualBox上运行的Ubuntu上启用kvm

我有一台带有Intel CPU的Windows机器(启动菜单上启用了VMX).我正在使用VirtualBox运行Ubuntu Guest.我正在运行qemu以运行另一个客户操作系统,使用kvm(-enable-kvm选项).

尝试插入kvm-intel模块时出现以下错误:

FATAL: Error inserting kvm_intel (/lib/modules/2.6.20-ARCH/kernel/drivers/kvm/kvm-intel.ko): Operation not supported
Run Code Online (Sandbox Code Playgroud)

我在客户操作系统中检查了vmx标志,我也没看到

$ grep vmx /proc/cpuinfo
$
Run Code Online (Sandbox Code Playgroud)

无论如何在客户端Ubuntu操作系统中启用kvm支持,以便我可以在Ubuntu客户机上运行支持kvm的qemu?

virtualization virtualbox kvm qemu

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

停止和关机

Halt和Poweroff命令有什么区别?据我所知,他们两个都导致机器关机,那为什么2个命令呢?

我想知道这个,因为在我的虚拟机中.Poweroff导致VM完全关闭.Whrereas停止导致杀死所有进程,然后导致100%CPU利用率的停顿.在给出msg"系统将要关闭"之后.当我使用暂停来关闭我的电脑时,这不会发生.基本上,停止和断电都会导致独立计算机(无VM)正常关闭.

linux shell shutdown

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

pthread_mutex_lock导致死锁

我使用上面的代码使用2个线程递增一个计数器,它独立地使用mut锁和递增计数器.线程进入此函数后,我面临死锁.

 pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;

 void *increment_counter(void *counter_addr)
{
    int max = MAX_COUNTER_VALUE;
    int iter;
    int counter;

    for(iter=0;iter< max ;iter++)
   // LOCK  
    pthread_mutex_lock(&mut);
    counter++;
    // UNLOCK 
    pthread_mutex_unlock(&mut);
    return NULL; 
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我哪里错了?

c locking pthreads

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

screen命令在底部持久启用菜单

我正在使用Linux Screen Utility在我的Putty终端中打开2个以上的窗口.通常在运行屏幕会话时a

Ctrl+A Ctrl+W
Run Code Online (Sandbox Code Playgroud)

给我们一个屏幕底部的窗口列表.

我有两个问题:

  • 我想知道是否有办法永久保持此菜单在屏幕的底部.

  • 如何给每个窗口命名?理想情况下,当我们执行

    屏幕-S screen_name

screen_name应出现在菜单中.我只能找到

0.csh 1.csh 2.csh

在菜单中.这可以改为

0.debug_screen 1.editor 2.games
Run Code Online (Sandbox Code Playgroud)

linux gnu-screen menu

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

llvm在C++中提取struct元素和struct size

LLVM新手在这里.我有以下C++程序

using namespace std;
struct A{
  int i;
  int j;
};

int main()
{
   struct A obj;
   obj.i = 10;
   obj.j = obj.i;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用clang ++,我可以看到LLVM IR包含struct字段,如下所示

%struct.A = type { i32, i32 }
Run Code Online (Sandbox Code Playgroud)

我想使用LLVM Pass获取结构元素.我编写了以下程序 - 遍历全局变量和每个指令操作数,但它们都没有帮助我提取结构A或Ai或Aj

    #include "llvm/Pass.h"
    #include "llvm/IR/Function.h"
    #include "llvm/Support/raw_ostream.h"

    #include <llvm/IR/Constants.h>
    #include <llvm/IR/DerivedTypes.h>
    #include <llvm/IR/Instructions.h>
    #include <llvm/IR/IntrinsicInst.h>
    #include <llvm/IR/LLVMContext.h>
    #include <llvm/IR/Module.h>

    #include <iostream>
    #include <map>
    #include <vector>


    using namespace llvm;

    namespace {

    class StructModulePass: public ModulePass {
    public:
    static char ID;
    StructModulePass() : …
Run Code Online (Sandbox Code Playgroud)

c++ struct static-analysis llvm

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

如何生成LLVM SSA格式

我编写以下C代码,其中变量X被分配了两次:

int main()
{
        int x;
        x = 10;
        x = 20;
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用以下命令编译并生成IR表示

clang -emit-llvm -c ssa.c
Run Code Online (Sandbox Code Playgroud)

产生红外线

; Function Attrs: nounwind uwtable
define i32 @main() #0 {
entry:
  %retval = alloca i32, align 4
  %x = alloca i32, align 4
  store i32 0, i32* %retval
  store i32 10, i32* %x, align 4
  store i32 20, i32* %x, align 4
  ret i32 0
}
Run Code Online (Sandbox Code Playgroud)

如果我对SSA格式的理解是正确的,则在此示例中,我们应将x1和x2视为生成的两个LLVM IR变量,并分别分配两个值10和20。我们应该使用一些特定的选项来获得SSA IR表示,或者我对IR表示的理解不正确吗?请指教。

编辑:正如一个答案中所建议的那样,使用-mem2reg优化传递会给我以下输出

clang -c -emit-llvm ssa.c -o ssa.bc
opt -mem2reg …
Run Code Online (Sandbox Code Playgroud)

llvm clang ssa llvm-clang llvm-ir

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

我在哪里可以获得fsck代码?

我一直试图找出fsck代码.我在Ubuntu的coreutils包中找不到它.有人可以让我知道,我可以在哪里看看fsck代码?

linux ubuntu fsck

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

无需 sudo 即可挂载卸载

我正在尝试编写一个脚本,该脚本将 ssh 进入主机,在那里执行安装操作,运行一些其他命令并退出。

其他命令(cd、cp)不需要 sudo 权限,但挂载选项需要 sudo 权限。我想写一个脚本可以做到:

ssh user@server "mount -t nfs xx.xx.xx.xx:/ /nfs -o rsize=4096,wsize=4096 ; cp pqr rst ; umount /nfs ;" 
Run Code Online (Sandbox Code Playgroud)

以及其他一些非 sudo 命令。如何在没有 sudo 选项且脚本运行时不输入任何密码的情况下执行此操作。

linux shell mount nfs

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

C宏给出编译时错误

我想用宏来扩展一个函数.所以我写了下面的代码:

#define INIT ( T ) \
    struct T * init##T() { \
    struct T * obj  = ( struct T *)malloc( sizeof (struct T )); \
    return obj; \
} \
Run Code Online (Sandbox Code Playgroud)

我使用以下方法调用宏:

INIT (mystruct);
Run Code Online (Sandbox Code Playgroud)

错误::

错误:在'struct'
警告之前预期'=',',',';','asm'或'__attribute__' :数据定义没有类型或存储类[默认启用]

我想基本上编写接受任何结构的通用宏,为该结构的对象分配空间并返回相同的值.

c macros c-preprocessor

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

什么时候分配新的内存?

我有以下程序:

#include<iostream>
#include<map>

using namespace std;

int  *ar;

int main(int argc, const char *argv[])
{
    int N,i;
    map <int , int> W;
    ar = new int[N+1];
    cin >> N;
    for (i = 1; i <= N; i++) {
        cin >> ar[i];
    }
    W[ar[N]]= -1;   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我给以下输入程序:

6

1 1 2 2 3 4
Run Code Online (Sandbox Code Playgroud)

如果我使用g ++ -O选项编译上面的代码(没有优化),我会在行中获得segabrt

W[ar[N]]= -1;
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 是不是ar []没有被新分配的内存?如果我用一些常数值替换该行,我会得到相同的错误.

    W[4] = -1;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 地图需要某种初始化吗?它通常无需初始化即可工作.

c++ memory-management map new-operator

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

使用#define的最大数组大小

可能重复:
堆栈溢出C ++

我有以下生成素数的程序:

#include<iostream> 
#include<cmath>
#include<algorithm>

#define MAX 10000000
using namespace std;

int main(int argc, const char *argv[])
{
    bool prime[MAX+1];
    fill_n(prime,MAX+1,true);
    int baseSqrt,i,j;
    baseSqrt = int(sqrt(MAX+1));
    for(i=2;i<=baseSqrt;i++){
        if(prime[i]){
            for(j=i+i;j<=MAX;j+=i){
                    prime[j]=false;
            }   
        }   
    }   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序在MAX值= 1000000时可以正常工作。但是当我将该值增加到10000000时,该程序将出现段错误。我尝试使用gdb,但是它在主要给段错误的地方停止了。我正在使用64位操作系统。即使我删除MAX并写入10000000而不是MAX,我也会遇到相同的错误。我要去哪里错了?请帮忙。

c++ arrays segmentation-fault c-preprocessor

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