小编Gil*_*il'的帖子

变量替换中的Bash冒号运算符?

我继承了一些bash代码,这两行让我感到困惑:

branch_name=`git describe --contains --all HEAD`
branch_name=${branch_name:-HEAD}
Run Code Online (Sandbox Code Playgroud)

我对:冒号运算符的理解是基于索引创建子串,因此-HEAD在这种情况下使用字符串没有任何意义.

string variables bash colon variable-substitution

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

fork()和wait()有两个子进程

我需要使用fork()和wait()函数来完成赋值.我们正在对非确定性行为进行建模,如果存在多个可能的转换,则需要fork()程序.

为了尝试解决fork和wait如何工作,我刚刚制作了一个简单的程序.我想现在我理解调用是如何工作的,并且如果程序只分支一次会很好,因为父进程可以使用单个子进程的退出状态来确定子进程是否达到接受状态.

从下面的代码中可以看出,我希望能够处理必须有多个子进程的情况.我的问题是你似乎只能使用_exit函数设置状态一次.因此,在我的示例中,父进程测试的退出状态显示第一个子进程在其退出状态时发出0,但没有关于第二个子进程的信息.

我试着简单地不是_exit() - 拒绝,但那个子进程会继续,实际上似乎有两个父进程.

对于华夫饼干感到抱歉,但如果有人能告诉我父进程如何获取有关多个子进程的状态信息,我将不胜感激,或者我很高兴父进程只能注意到来自子进程的接受状态,但在这种情况下,我将成功地需要退出具有拒绝状态的子进程.

我的测试代码如下:

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

int main(void)  {

    pid_t child_pid, wpid, pid;
    int status = 0;
    int i;

    int a[3] = {1, 2, 1};
    for(i = 1; i < 3; i++)  {
        printf("i = %d\n", i);
        pid = getpid();
        printf("pid after i = %d\n", pid);
        if((child_pid = fork()) == 0)  {
            printf("In child process\n");
            pid = getpid();
            printf("pid in child process is %d\n", pid);
            /* Is a …
Run Code Online (Sandbox Code Playgroud)

c unix fork wait

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

加载java.util.logging.config.file以进行默认初始化

我正在尝试在log.properties启动应用程序时加载自定义文件.

我的属性文件与我的主类在同一个包中,所以我假设-Djava.util.logging.config.file=log.properties命令行参数应该加载属性文件.

但是只有在指定属性文件的完整绝对路径时才会加载属性.有关如何使用相对路径的任何建议?

java properties java.util.logging

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

Ruby中奇怪的反斜杠替换

我不明白这个Ruby代码:

>> puts '\\ <- single backslash'
# \ <- single backslash

>> puts '\\ <- 2x a, because 2 backslashes get replaced'.sub(/\\/, 'aa')
# aa <- 2x a, because two backslashes get replaced
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切如预期.但是如果我们搜索1 /\\/,并用2替换,编码'\\\\',为什么我们得到这个:

>> puts '\\ <- only 1 ... replace 1 with 2'.sub(/\\/, '\\\\')
# \ <- only 1 backslash, even though we replace 1 with 2
Run Code Online (Sandbox Code Playgroud)

然后,当我们编码3时'\\\\\\',我们只得到2:

>> puts '\\ <- only 2 ... 1 with 3'.sub(/\\/, '\\\\\\')
# \\ …
Run Code Online (Sandbox Code Playgroud)

ruby regex backslash

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

如何获得在iphone上切换标签菜单的事件

我正在试图弄清楚如何捕获控制开关标签的事件 UITabBarController.我怎么能做到这一点?

iphone uitabbarcontroller iphone-sdk-3.0

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

来自功能依赖的候选键

给定关系R与属性ABCDE.您将获得以下依赖项:A - > B,BC - > E和ED - > A.我已经有了CDE,ACD和BCD的答案.我只需要知道如何做到这一点.谢谢.

database-theory functional-dependencies

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

26
推荐指数
2
解决办法
9399
查看次数

我们如何使用unix排序更快地排序?

我们正在对包含37个字段的5GB文件进行排序,并使用5个键对其进行排序.大文件由1000个文件组成,每个文件5MB.

190分钟后仍然没有完成.

我想知道是否还有其他方法可以加快排序速度.我们选择unix排序因为我们不希望它耗尽所有内存,所以任何基于内存的方法都不行.

独立排序每个文件的优点是什么,然后使用-m选项合并排序呢?

unix sorting

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

SQL查询查找Kevin Bacon的数字为2

使用IMDB数据库,我有表actor,castsmovie,我需要选择凯文培根数为2的演员.我认为这应该这样做,但我得到0行返回.我的错误是什么?

select fname, lname
from actor join casts on pid=actor.id
where actor.id in (
    select a3.id  --actors who have a kb number of 2
    from casts c3 join actor a3 on c3.pid=a3.id,
    (
     (select c1.mid --actors who have a kb number of 1
     from (casts c1 join actor a1 on c1.pid=a1.id), (casts c2 join actor a2 on c2.pid=a2.id)
     where c1.mid=c2.mid and a2.fname='Kevin' and a2.lname='Bacon')
    )Level1 where c3.mid=Level1.mid
)
and actor.id not in (select a4.id …
Run Code Online (Sandbox Code Playgroud)

sql sql-server select subquery sql-server-2008

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

为什么修改了ArrayList参数,但没有修改String参数?

public class StackOverFlow {
    public static void main(String[] args) {
        ArrayList<String> al = new ArrayList<String>();
        al.add("A");
        al.add("B");
        markAsNull(al);
        System.out.println("ArrayList elements are "+al);

        String str = "Hello";
        markStringAsNull(str);
        System.out.println("str "+ str);
    }
    private static void markAsNull(ArrayList<String> str){
        str.add("C");
        str= null;
    }
    private static void markStringAsNull(String str){
        str = str + "Append me";
        str = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

这输出:

ArrayList elements are [A, B, C]
str Hello
Run Code Online (Sandbox Code Playgroud)

在这种情况下ArrayList,添加的元素将被检索.如果String方法调用对传递的String没有影响.JVM到底在做什么?谁能详细解释一下?

java parameters pass-by-reference call-by-value

25
推荐指数
3
解决办法
6578
查看次数