小编use*_*136的帖子

Bash:等待超时

在Bash脚本中,我想做类似的事情:

app1 &
pidApp1=$!
app2 &
pidApp2=$1

timeout 60 wait $pidApp1 $pidApp2
kill -9 $pidApp1 $pidApp2
Run Code Online (Sandbox Code Playgroud)

即,在后台启动两个应用程序,并给他们60秒完成他们的工作.然后,如果他们没有在那段时间内完成,就杀了他们.

不幸的是,上面的代码不起作用,因为它timeout是一个可执行文件,而它wait是一个shell命令.我尝试将其更改为:

timeout 60 bash -c wait $pidApp1 $pidApp2
Run Code Online (Sandbox Code Playgroud)

但是这仍然不起作用,因为wait只能在同一个shell中启动的PID上调用.

有任何想法吗?

linux bash shell

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

这些字符串或变量?

来自C/Python/Java背景,我无法理解一些R语法,其中文字看起来像变量,但似乎表现得像字符串.例如:

library(ggplot2)
library("ggplot2")
Run Code Online (Sandbox Code Playgroud)

这两条线的行为相当.但是,我希望第一行的意思是"加载名称存储在ggplot2变量中的库"并给出类似的错误object 'ggplot2' not found.

说到ggplot2:

ggplot(data, aes(factor(arrivalRate), responseTime, fill=factor(mode))) +
  geom_violin(trim=FALSE, position=dodge)
Run Code Online (Sandbox Code Playgroud)

变量arrivalRate,responseTime并且mode不存在,但不知何故[R知道找一找里面data的数据帧.我假设aes实际上接收字符串,然后使用类似的东西进行处理eval.

R如何解析代码,最终将一些文字解释为字符串?

r ggplot2

32
推荐指数
4
解决办法
1245
查看次数

在杀死进程之前保存gmon.out

我想用gprof来配置一个守护进程.我的守护进程使用第三方库,它使用它来注册一些回调,然后调用一个main永不返回的函数.我需要调用kill(SIGTERM或SIGKILL)来终止守护进程.不幸的是,gprof的手册页说明如下:

配置文件程序必须调用"exit"(2)或正常返回,以便将配置文件信息保存在gmon.out文件中.

是否有方法可以保存使用SIGTERM或SIGKILL杀死的进程的分析信息?

linux gprof

20
推荐指数
2
解决办法
4478
查看次数

如何创建渲染3D场景的4KB Linux二进制文件?

我刚刚了解了4k演示场景比赛.它包括创建一个4KB的可执行文件,它可以呈现一个漂亮的3D场景.引用的演示是为Windows构建的,所以我想知道如何在Linux上创建4KB的OpenGL场景.

一个简单的"你好世界"已经消耗了8KB:

$ cat ex.c
#include <stdio.h>

int main()
{
       printf("Hello world\n");
}
$ gcc -Os ex.c -o ex
$ ls -l ex
-rwxrwxr-x 1 cklein cklein 8374 2012-05-11 13:56 ex
Run Code Online (Sandbox Code Playgroud)

c linux linker executable

13
推荐指数
2
解决办法
2719
查看次数

如何使ansible只在需要时要求成为密码

我使用ansible 2.0.2.0从任何计算机更新我的静态网站.我的playbook只在localhost上运行,基本上有两部分:

  • 特权部分:确保安装包,基本上是apt任务become: true
  • 非特权部分:填写模板,缩小并与网络托管服务同步,基本上command没有任务become.

我宁愿在同一个剧本中使用这两个部分,这样我就不必担心切换计算机时的依赖性.理想情况下,我希望ansible检查apt软件包是否已安装,如果需要安装任何密码,则只询问密码.

到目前为止我探索过的其他不太令人满意的替代方案及其缺点如下:

  • sudo ansible-playbook ...:运行非特权部分root,在不需要时询问sudo密码;
  • ansible-playbook --ask-become-pass ...:总是询问sudo密码,即使不需要安装新软件包;
  • ansible-playbook ...:失败了sudo: a password is required.

有没有办法将特权和非特权部分保存在同一个剧本中,而不必不必输入sudo密码,也不给无特权部分提供不必要的权限?

ansible

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

为什么Linux内核有`struct sock`和`struct socket`?

这个问题之前在互联网上被问过,但我找不到一个好的答案.

Linux内核网络堆栈具有两种结构:

这两种结构基本上是相连的,但似乎寿命略有不同.人们可以找到一个sk通道sock->sk,或找到一个sock通道sk->sk_socket.

为什么有两种结构来存储有关套接字的信息?假设我需要添加一个新字段,何时将其添加到struct socket何时struct sock

UPDATE:请注意,我指的是struct socketinclude/linux/net.hLinux源代码,这只是针对内核代码了,里面没有 /usr/include/sys/socket.h这意味着用户空间.

sockets linux-kernel

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

Python中x == x是否为假?

我在统计模块中偶然发现了SciPy源代码中的这行代码:

return 1.0*(x==x)
Run Code Online (Sandbox Code Playgroud)

这是否会归还其他东西1.0?换句话说,是否有X使得任何价值x == x持有False

python floating-point equality

8
推荐指数
2
解决办法
328
查看次数

boost :: program_options"polymorphic"参数

我想使用boost :: program_options创建一个可执行文件,可以调用如下:

./example --nmax=0,10  # nmax is chosen randomly between 0 and 10
./example --nmax=9     # nmax is set to 9
./example              # nmax is set to the default value of 10
Run Code Online (Sandbox Code Playgroud)

以最小的代码以类型安全的方式实现这一目标的最佳方法是什么?

c++ boost boost-program-options

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

将透明GLSurfaceview覆盖到android中的现有视图?

您好我一直在尝试将GLSurfaceview叠加到现有视图上.下面的代码显示了我如何叠加.唯一不起作用的是glsurfaceview的透明度.

    view = new GLSurfaceView(this);

    view.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
    view.getHolder().setFormat(PixelFormat.TRANSLUCENT);

    view.setRenderer(new Level1Renderer(this));

    setContentView(R.layout.test);


    addContentView(view, new LayoutParams(100,400));
Run Code Online (Sandbox Code Playgroud)

然后我将渲染器中的背景颜色设置为

        gl.glClearColor(0.0f, 0.0f, 0.0f, 0);
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我要遗漏的东西吗?

transparency android overlay glsurfaceview

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

如何尽可能快地制作Python生成器?

对于编写事件驱动的模拟器,我依赖于simpy,它大量使用Python生成器.我试图了解如何尽可能快地生成生成器,即最小化状态保存/恢复开销.我尝试了三种选择

  1. 所有状态都存储在类实例中
  2. 全局存储全部状态
  3. 所有状态都存储在本地

并使用Python 3.4.3获得以下结果:

class_generator 20.851247710175812
global_generator 12.802394330501556
local_generator 9.067587919533253
Run Code Online (Sandbox Code Playgroud)

代码可以在这里找到.

这对我来说是违反直觉的:在类实例中存储所有状态意味着只self需要保存/恢复,而全局存储所有状态应确保零保存/恢复开销.

有谁知道为什么类生成器和全局生成器比本地生成器慢?

python generator python-3.x

4
推荐指数
2
解决办法
146
查看次数

HAVE_*宏的目的是什么?

我正在重用CMake项目中的一些autotools项目的一些C/C++源文件,我看到许多源文件散落着如下行:

#ifdef HAVE_UNISTD_H
#include <unistd.h>  // for getpid()
#endif
Run Code Online (Sandbox Code Playgroud)

我会理解这个构造的目的,如果getpid()是可选的,并且它的调用被等效的HAVE_UNISTD_H指令包围.但是,没有HAVE_UNISTD_H源文件不编译,抱怨getpid()没有定义.这比让我知道unistd.h没有找到的编译器感觉更加神秘.

当然,这只是一个例子.其他流行的宏包括HAVE_STDINT_H,HAVE_INTTYPES_H等等,其存在是编译源文件所必需的.

为什么要包括HAVE_*警卫?我觉得他们只会带来不利因素:

  • 重用此类源文件需要确保存在正确的头文件HAVE_*定义正确的宏.
  • 如果出现错误,开发人员会收到更加神秘的消息,即编译器不会报告根本原因(未找到标题),而是报告辅助错误(未找到类型/函数).
  • 源文件有点长,读起来有点繁琐,即#includes与#ifdefs 混合.

c c++ macros autotools

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

为什么GRO更有效率?

通用接收卸载(GRO)是Linux中的一种软件技术,用于聚合属于同一流的多个传入数据包。链接的文章声称降低了CPU利用率,因为单个聚合的数据包会遍历网络堆栈,而不是每个数据包单独遍历网络堆栈。

但是,如果您查看GRO的源代码,那感觉就像是一个网络堆栈。例如,传入的TCP / IPv4数据包需要经过:

每个功能都执行解封装,并查看相应的帧/网络/传输头,如“常规”网络堆栈所期望的那样。

假设计算机不执行防火墙/ NAT或其他明显昂贵的每数据包处理,那么“常规”网络堆栈中的速度如此慢,以至于“ GRO网络堆栈”可以加速呢?

networking offloading linux-kernel

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

使用 Pillow 将矩形映射到四边形

我正在尝试编写一个Python程序,它接受输入图像(例如JPEG)并生成“地球仪组件”输出图像,类似于le Paper Globe。本质上,如果输出图像被打印、剪切、折叠和粘合,人们应该获得投影到粗糙球体上的原始图像。

该程序会将输入图像划分为 32 个(8 个水平,4 个垂直)矩形,然后将每个矩形映射到一些精心选择的梯形上,或者更一般地说,映射到四边形上。我找到了一种将四边形映射到正方形的Pillow/PIL 方法,但找不到将矩形映射到四边形的方法。

有谁知道如何在Python中将输入图像的矩形映射到输出图像的四边形上?我更喜欢 Pillow/PIL,但任何可以打开和保存 JPEG 的库都可以。

python python-imaging-library

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