小编Nat*_*man的帖子

关注机器间的pids(ssh)

我基本上尝试编写一个类似pstree的命令,除了它应该遵循跨机器的进程.

我的意思是如果我运行这个:

$ ssh $node sleep 1000
Run Code Online (Sandbox Code Playgroud)

那么命令应该显示如下:

ssh $node -- ($node) sleep 1000
Run Code Online (Sandbox Code Playgroud)

如果我跑步:

$ ssh $node ssh $node sleep 1000

ssh $node---($node) ssh $node---($node) sleep 1000
Run Code Online (Sandbox Code Playgroud)

等等 ...

我的问题是:如何将一台机器上的一个ssh会话映射到另一台机器上的生成进程?

本地父子进程不是问题,但是如何确定在另一个节点上触发另一个进程的一个节点上的哪个ssh命令.

  1. linux 2.6.18

  2. 只有openSSH的"远程"东西.目前正在运行OpenSSH_4.3p2.

  3. 当然,SSH访问所有节点(基于密钥的身份验证),因此可以从所有节点获得ps和netstat.

  4. 仅Linux的"黑客"很好,不需要便携,但当然这将是一个额外的好处.

  5. 用户将始终保持不变,并且我的命令/脚本正在以该用户身份运行.该用户不是root用户.

  6. 不必快,只准确.

自发的解决方案是编写一个pstree克隆,在命令字符串" ssh" 上触发,找出源端口然后转到相关的远程机器并找出sshd由这个特定命令生成的孩子中的哪一个.

但也许有一种更聪明的方式呢?:P

linux ssh netstat ps

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

C中的信号处理 - 中断中断

当我的程序同时处理其他信号时,我想知道是否有可能被信号中断,我试图用以下方法模拟它:

#include<signal.h>
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
#include<string.h>

void sig_output()
{
    sigset_t set;
    sigprocmask(0,NULL,&set);
    printf("currently blocking:");
    if (sigismember(&set,SIGUSR1))
        printf("\nSIGUSR1");
    if(sigismember(&set,SIGUSR2))
        printf("\nSIGUSR2");
    printf("\n");
    return ;
}

void sig_handler(int sig)
{
    raise(SIGUSR1);    
    printf("start\n");
    if (sig==SIGUSR1)
        printf("SIGUSR1\n");
    else if (sig==SIGUSR2)
        printf("SIGUSR2\n");
    printf("end\n");
    return ;
}

void other_sig_handler(int sig)
{  
    printf("start - other\n");
    if (sig==SIGUSR1)
        printf("SIGUSR1\n");
    else if (sig==SIGUSR2)
        printf("SIGUSR2\n");
    printf("end - other\n");
    return ;
}

int main()
{
    sig_output();
    struct sigaction a;
    a.sa_handler=sig_handler;
    a.sa_flags=0;
    sigset_t set,old;
    //blocking SIGUSR1,SIGUSR2
    sigemptyset(&set);
    sigaddset(&set,SIGUSR1);
    sigaddset(&set,SIGUSR2);
    printf("blocking SIGUSR1, SIGUSR2\n"); …
Run Code Online (Sandbox Code Playgroud)

c signals

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

脚本Audacity

Audacity有任何脚本库吗?

具体来说,我正在寻找一种方法来给它一个很长的mp3文件podcast.mp3并将它分成几个文件,比如每个10分钟:podcast0.mp3, podcast1.mp3等等......

我不想手动执行此操作,因为我想通过此脚本运行我收听的所有播客.


一些背景:
我听的各种播客(例如,Stackoverflow)非常长.我在我的手机上听这些,它有一个很小的MP3播放器,不允许我跳到文件中的任意时间.这个MP3播放器有一个讨厌的习惯,就是忘记文件中的位置.例如:

  • 有时如果有人在播客中间给我打电话,它会从头开始播放.
  • 我有时会在上班时暂停播客,当我在一天结束时尝试继续播放时,它会重置到音轨的开头.

发生这种情况时,我必须手动快进或快退.这个矮小的玩家以5倍的速度快进,所以如果我在播客的中间,我可以花6到7分钟拿着快进按钮回到原来的位置.我想如果我将长播客分成较短的文件,我可以省去一些烦恼.

windows scripting audacity

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

C中的套接字编程

好的,所以我试图让一些UDP代码正常工作,当涉及到使用C的网络编程时,我几乎不是绿色的.我正在使用此处的示例文件

基本上我只是在侦听给定端口上的传入UDP数据包,然后我想以相同的方式发送一些数据.以下是相关部分.

此时,套接字已设置并绑定到选择的端口并等待传入​​的数据包:

printf("GSProxy: waiting to recvfrom...\n");

addr_len = (socklen_t) sizeof their_addr;
if ((numbytes = recvfrom(sockfd, buf, MAXBUFLEN-1 , 0,
    (struct sockaddr *)&their_addr, &addr_len)) == -1) { // argument 6 gives a warning but is correct int
    perror("recvfrom");
    exit(1);
}

printf("GSProxy: got packet from %s\n", 
inet_ntop(their_addr.ss_family, 
    get_in_addr((struct sockaddr *)&their_addr), s, sizeof s));
printf("GSProxy: packet is %d bytes long\n", numbytes);
buf[numbytes] = '\0';
printf("GSProxy: packet contains \"%s\"\n", buf);

char retmsg[] = "Hello!";
if ((numbytes = sendto(sockfd, retmsg, 7, 0, …
Run Code Online (Sandbox Code Playgroud)

c sockets network-programming

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

在tcsh中回显嵌套引号

我有一个生成文本文件的tcsh脚本.文本文件中的一行是:

bla bla bla 'foo foo foo "bar bar bar"': etc etc;
Run Code Online (Sandbox Code Playgroud)

注意嵌套'"和也:;那一定是在那里.

:;需要整个字符串用引号包围.但是,如果我这样做,我很难逃避引号.

命令是:

echo "bla bla bla 'foo foo foo "bar bar bar"': etc etc;" >> outfile
Run Code Online (Sandbox Code Playgroud)

如何摆脱周围的引号bar bar bar以便正确打印?

interpolation tcsh echo quotation-marks

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

什么时候需要在Python中的try..except中添加`else`子句?

当我使用异常处理在Python中编写代码时,我可以编写如下代码:

try:
    some_code_that_can_cause_an_exception()
except:
    some_code_to_handle_exceptions()
else:
    code_that_needs_to_run_when_there_are_no_exceptions()
Run Code Online (Sandbox Code Playgroud)

这有什么不同于:

try:
    some_code_that_can_cause_an_exception()
except:
    some_code_to_handle_exceptions()

code_that_needs_to_run_when_there_are_no_exceptions()
Run Code Online (Sandbox Code Playgroud)

在这两种情况下code_that_needs_to_run_when_there_are_no_exceptions()都会在没有例外时执行.有什么不同?

python exception

4
推荐指数
3
解决办法
537
查看次数

如何测量函数在Matlab中运行的时间?

我有一个比我想要的运行时间更长的Matlab程序.是否有内置的方式来分析Matlab,类似于timeunix中的工作原理?

profiler matlab

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

如何在matlab中创建更浅的颜色?

我有一个基色,由基本的[RGB]矩阵表示.

我想根据我的常数创建一个较浅或较暗的颜色,基本上是一个角度(0 - 90°).

我正在寻找一种算法,如何根据该角度创建更亮或更暗的颜色.

较浅颜色的端点为白色,较暗颜色的端点为黑色.

愚蠢的例子:

Green -> Lime -> White

Blue -> Navy -> Black
Run Code Online (Sandbox Code Playgroud)
function [result] = GetColor(baseColor, angleValue)

    value = round(angleValue);

    endcolor = [1 1 1];

    r = linspace(basecolor(1,1), endcolor(1,1), 90);
    g = linspace(basecolor(1,2), endcolor(1,2), 90);
    b = linspace(basecolor(1,3), endcolor(1,3), 90);

    result = [r(value) g(value) b(value)];

end
Run Code Online (Sandbox Code Playgroud)

algorithm matlab

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

如何用大写字母替换特定字符?

请考虑以下字符串

String = "这是为了测试.我是perl的新手!请帮助.你可以帮忙吗?我希望如此."

在后上面的字符串.?!下一个字符应为大写.我怎样才能做到这一点?

我正在逐行读取文本文件,我需要将修改后的数据写入另一个文件.

对你的帮助表示感谢.

perl

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

如何在C++中为枚举指定无符号整数?

在我正在重写的内部的C++库中,我有一些无符号整数变量,我想将其转换为枚举:

enum InitType {
    INIT,
    NON_INIT
};
Run Code Online (Sandbox Code Playgroud)

我有一个这种类型的变量:

InitType InitVar;
Run Code Online (Sandbox Code Playgroud)

该库是从其变量为普通整数的代码的另一部分调用的:

uint32_t UnsignedIntVar;
Run Code Online (Sandbox Code Playgroud)

我想将从调用者传递的无符号版本分配给库内部枚举:

InitVar = UnsignedIntVar;
Run Code Online (Sandbox Code Playgroud)

但编译器不喜欢这样:

error: invalid conversion from 'uint32_t' to 'InitType'
Run Code Online (Sandbox Code Playgroud)

执行此转换的最简洁方法是什么?


以下是我的一些想法:

如果enum只有两个值,我可以这样做:

    InitVar = UnsignedIntVar ? Init : NonInit;
Run Code Online (Sandbox Code Playgroud)

这是我想做这样一个任务的时候写的很多东西.

如果它有更多值,我可以创建一个转换表:

InitType Uint2InitTypeConv = {INIT_0, INIT_1, INIT_2...};
Run Code Online (Sandbox Code Playgroud)

哪里INIT_x只是枚举的名称.然后我可以使用表格进行翻译:

InitVar = Uint2InitTypeConv[UnsignedIntVar];
Run Code Online (Sandbox Code Playgroud)

这看起来很干净.但是,我认为我应该可以为此重载operator=,但我似乎无法做到这一点.这很容易包含我能提出的任何其他丑陋.

c++ enums type-conversion

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