小编Kyl*_*ndt的帖子

等待进程组时,waitpid()没有子进程错误

编写我自己的玩具外壳,并试图实现作业控制.

我正在使用setpgid在子级和父级中设置子级的进程组.我的等待电话是:

pid = waitpid(-pid, &status, 0)
Run Code Online (Sandbox Code Playgroud)

但是,waitpid返回-1并且perror说"没有子进程".但是,它确实似乎每次都在等待.另外,ps输出在从shell运行时看起来正确.因为ps父级的进程就像我期望的那样是kbsh.

% ps -o pid,ppid,pgrp,session,tpgid,comm
Forking
In Parent: Setting process group to 20809 of process 20809 with setpgid
In Child Processes, pid of child process is 20809
in Child: Setting process group to 20809 of process 20809 with setpgid
Requesting that Process Group 20809 becomes the foreground process with tcsetpgrp
Waiting for job with process group 20809
  PID  PPID  PGRP  SESS TPGID COMMAND
12002 32573 12002 12002 20809 zsh
20808 12002 20808 12002 …
Run Code Online (Sandbox Code Playgroud)

c unix

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

WIFEXITED为什么会在运行过程中返回True?

当我等待作为子进程的特定运行进程组时,WIFEXITED返回true表示该进程已退出?这是它的工作方式吗?似乎有些东西我不理解......

if ( waitpid(-pgid, &pstatus, WUNTRACED|WNOHANG ) == -1)
    perror("Wait error");

if ( WIFEXITED(pstatus) ) {
    strncpy(buf,  "Exited", buf_size);
    return 0;
Run Code Online (Sandbox Code Playgroud)

c system-calls

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

ddd在开始时挂起

当我启动ddd时,似乎挂起等待gdb.这是输出的尾端ddd --trace:

#  Saving session in "/home/kbrandt/.ddd/sessions/106d7eb3d567f23b01125736049734486400000041300582/init"...
#  Saving session in "/home/kbrandt/.ddd/sessions/106d7eb3d567f23b01125736049734486400000041300582/init"...done.
2009.11.04 13:48:17
<- "(gdb)  "
Run Code Online (Sandbox Code Playgroud)

如果我选择不同的调试器,就不会发生这种情况--perl.我读过有关添加set prompt (gdb)~/.gdbinit(末尾的空格)的内容,但这并不能解决问题.gdb自己很好.谁知道这可能是什么?

gdb ddd-debugger

7
推荐指数
2
解决办法
5545
查看次数

处理SIGSEGV与恢复?

所述信号包的状态:

同步信号是由程序执行中的错误触发的信号:SIGBUS,SIGFPE和SIGSEGV.这些仅在程序执行时被认为是同步的,而不是在使用os.Process.Kill或kill程序或类似机制发送时.通常,除了下面讨论的,Go程序将同步信号转换为运行时恐慌.

然而,似乎recover()没有抓住这一点.

程序:

package main

import (
    "fmt"
    "unsafe"

    "log"
)

func seeAnotherDay() {
    defer func() {
        if p := recover(); p != nil {
            err := fmt.Errorf("recover panic: panic call")
            log.Println(err)
            return
        }
    }()
    panic("oops")
}

func notSoMuch() {
    defer func() {
        if p := recover(); p != nil {
            err := fmt.Errorf("recover panic: sigseg")
            log.Println(err)
            return
        }
    }()
    b := make([]byte, 1)
    log.Println("access some memory")
    foo := (*int)(unsafe.Pointer(uintptr(unsafe.Pointer(&b[0])) + uintptr(9999999999999999)))
    fmt.Print(*foo + 1) …
Run Code Online (Sandbox Code Playgroud)

go

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

R如何根据另一个变量的范围获得一个变量的平均值?

如果我有两个变量X和Y的一系列观察,我怎样才能根据变量X的范围得到Y的平均值?

例如,有些数据如下:

df = data.frame(x=runif(50,1,100),y=runif(50,300,700))

我怎么能得到答案"当X为1-10时,平均值为332.4,当X为11-20时,y的平均值为632.3,等等......"

aggregate r dataframe

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

在S4对象中使用S3类的示例

我想包含一个RODBC连接作为S4对象的一部分.看起来RODBC是S3.例如:

setClass(
  Class="Node",
  representation=representation(
    nodeName = "character",
    connection = "RODBC"
  )                    
)
Run Code Online (Sandbox Code Playgroud)

投掷undefined slot classes.它看起来像我想使用setOldClass,但我无法弄清楚如何使用它.假设我确实想要setOldClass,我将如何使用setOldClass以便将RODBC连接作为插槽添加到我的Node类中?

methods r s4

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

解释pprof堆图

当我使用pprof配置堆时,我得到以下内容:

在此输入图像描述

但是,我不清楚如何解释这种可视化.特别是:

"箭头旁边的记忆意味着_____并且盒子里面的记忆意味着______.所以当一个盒子里有多个箭头时,它意味着_____,当它有多个箭头时,就意味着_____".

go pprof heap-profiling

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

使用Redis Sentinel支持从属复制的奴隶?

我们有两个数据中心,每个数据中心都有两个redis实例.通常它们被复制为链.

NY1 (Master) --> NY2 (Slave) --> CO1 (Slave) --> CO2 (Slave)

NY是纽约,CO是科罗拉多州,我们的备份数据中心.为了节省WAN上的带宽,我们不希望CO1 CO2连接到NY1.相反,我们想要一种链配置,其中只有一个从属设备直接连接到主设备,而其他设备都是"奴隶的奴隶".

可以使用Sentinel维护这种复制布局吗?或者所有奴隶都必须是主人的奴隶,而不是奴隶的奴隶?

redis redis-sentinel

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

R中哈希与列表之间的差异

在R中,我发现列表是有用的结构(如Python中的字典).我偶然发现了hash看似提供非常类似功能的软件包.

列表和散列之间是否有任何实际差异使得一个比另一个更令人满意?(除了列表是基础的一部分)

我希望这不是太开放,但不知道如何缩小范围.

hash r list

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

针对超出范围索引的弹性时间范围查询的性能

使用日期弹性索引是很常见的,特别是来自诸如 logstash 之类的东西。

因此,例如,你有一个像指数foo-2016.05.01foo-2016.05.02等...

对数据进行时间范围查询时。查询我已经知道在该时间范围内没有数据的索引的成本是多少?

因此,例如,如果时间范围查询仅询问 2016.05.02 的数据,但我还在foo-2016.05.01查询中包含索引。

这基本上是每个索引的快速单操作,其中索引知道它在该日期范围内没有数据,还是这样做会影响性能?我不仅希望知道是/否的答案,还希望了解它为什么会这样。

elasticsearch

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