小编Wil*_*ell的帖子

是否有可能让'exec'在Perl中使用'$ SHELL -c'而不是'/ bin/sh -c'?

在Perl中,是否有可能使'exec','system'和'qx'使用除/ bin/sh之外的shell(不使用像'exec'这样的构造$ SHELL -c ..."',并且没有重新编译perl)?

编辑:这个问题的动机是一个bash脚本,它执行'export -f foo',然后在子shell中使用perl直接通过'system"foo"'调用函数.我不确定这种技术是否适用于所有sh,虽然'system'/ bin/bash -c foo"'可能在这种情况下有效,但我不希望导出的函数在/ bin /的所有变体中传播SH.但大多数时候我只是好奇,现在对如何将解决方案扩展到qx感到好奇.此外,由于我对非unix平台一无所知,所以我想避免在解决方案中对备用shell的路径进行硬编码.

unix perl exec

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

我怎么能确定在使用pause()时我没有丢失信号?

我正在编写一个程序,它使用fork来创建子进程,并在完成后对它们进行计数.我怎么能确定我没有丢失信号?如果孩子在主程序仍然处理前一个信号时发送信号,会发生什么?是"丢失"的信号?我怎么能避免这种情况?

void my_prog()
{
    for(i = 0; i<numberOfDirectChildrenGlobal; ++i) {    
        pid = fork();
        if(pid > 0)//parent
            //do parent thing
        else if(0 == pid) //child
            //do child thing
        else
            //exit with error
    }

    while(numberOfDirectChildrenGlobal > 0) {
        pause(); //waiting for signal as many times as number of direct children
    }

    kill(getppid(),SIGUSR1);
    exit(0);
}

void sigUsrHandler(int signum)
{
    //re-register to SIGUSR1
    signal(SIGUSR1, sigUsrHandler);
    //update number of children that finished
    --numberOfDirectChildrenGlobal;
}
Run Code Online (Sandbox Code Playgroud)

c linux signals

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

AWK通过传递变量替换特定行的模式

我试图将两个变量传递给awk,以便在特定行(-v var2)中用空格("")替换一个单词(-v var1 ).当我运行它时,在我想要的线路上没有任何东西被替换.

我的第一个做法是:

palabra=betina; i=5 ; awk -v var1="$i" -v var2="$palabra" 'NR==var1 {sub("var2"," ")}{print }' Countries > tmp
Run Code Online (Sandbox Code Playgroud)

"国家"文件中,内容为:

usa
usa
colombia
spain
betina
Run Code Online (Sandbox Code Playgroud)

variables awk line

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

当另一列中的值为X时,查找一列的最大值

当C列的值= X时,如何找到一列(B列)的最大值.如何保留A列中的标签.假设我的数据名为my.data,a列=国家名,列b =出生的孩子数量和C列=孩子出生的年份.那么如何找到2001年出生的最大子女数量,保持国家的名称?

谢谢,我很抱歉,我是R的新手

r max

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

getopt之后'set-$ args'的目的是什么?

在bash中使用getopt的通常示例如下

args=`getopt abo: $*`
errcode=$?
set -- $args
Run Code Online (Sandbox Code Playgroud)

最后一行实现了什么?

bash getopt

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

使用套接字在nat后面连接一个IP

考虑一部电话,它与电话A连接到wifi,地址为Dynamic Ip,ex:192.168.0.34并通过服务器套接字在上侦听,port 7567,如果我有另一部电话B连接公用电话,则可以使用任何编程语言连接该套接字。 IP说10.0.0.56,我有WiFi路由器IP说前55.56.89.76

networking network-programming

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

如何在shell脚本中覆盖多行?

我想一遍又一遍地写多行.就像是

echo "One Line"
echo "Two Lines"
echo "\r\b\rThree Lines"
echo "Four Lines"
Run Code Online (Sandbox Code Playgroud)

理想情况下,这将首先输出:

One Line
Two Lines
Run Code Online (Sandbox Code Playgroud)

然后将此输出替换为

Three Lines
Four Lines
Run Code Online (Sandbox Code Playgroud)

麻烦的是,虽然回车会让你覆盖一行输出,但是你不能通过\ b来越过\n.然后我如何覆盖多行?

shell sh echo

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

从文件开头删除字节数

我想复制一个没有前256个字节的文件.

在python中有一个很好的方法吗?

我猜测,简单的方法是用计数器读取字节字节,然后只有当它达到256时才开始复制.

我希望有更优雅的方式.

谢谢.

python file

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

如何将正则表达式传递给 AWK 中的函数

我不知道如何将正则表达式作为参数传递给函数。

如果我传递一个字符串,就可以了,

我有以下 awk 文件,

#!/usr/bin/awk -f

function find(name){
    for(i=0;i<NF;i++)if($(i+1)~name)print $(i+1)
}

{
    find("mysql")
}    
Run Code Online (Sandbox Code Playgroud)

我做类似的事情

$ ./fct.awk <(echo "$str")
Run Code Online (Sandbox Code Playgroud)

这工作正常。

但是当我调用 awk 文件时,

{
    find(/mysql/)
}  
Run Code Online (Sandbox Code Playgroud)

这不起作用。

我究竟做错了什么?

谢谢,

埃里克·J。

awk

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

bash中的进程组

在下面的会话中,bash启动两个不同的管道,但它们共享相同的pgid.当ls管道被删除(所以不同的管道没有在子shell调用),两个管道得到不同的处理组.是什么赋予了?特别是,非交互式shell将不同的管道放在同一个进程组中是否正确?还是我误解了什么?

bash-3.2$ cat print-pgid 
#!/bin/sh
echo $$ starting in $(ps -o pgid= $$) >&2
bash-3.2$ ls | for i in a b; do ./print-pgid | ./print-pgid & done
bash-3.2$ 67396 starting in 67393
67395 starting in 67393
67397 starting in 67393
67398 starting in 67393

bash-3.2$ for i in a b; do ./print-pgid | ./print-pgid & done
[1] 67404
[2] 67406
bash-3.2$ 67404 starting in 67403
67403 starting in 67403
67405 starting in 67405
67406 starting in 67405 …
Run Code Online (Sandbox Code Playgroud)

bash shell

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

标签 统计

awk ×2

bash ×2

shell ×2

c ×1

echo ×1

exec ×1

file ×1

getopt ×1

line ×1

linux ×1

max ×1

network-programming ×1

networking ×1

perl ×1

python ×1

r ×1

sh ×1

signals ×1

unix ×1

variables ×1