标签: pipe

在创建进程出口时,Windows中的命名管道会发生什么?

场景:进程创建管道并与之CreateNamedPipe()连接ConnectNamedPipe(),传输一些数据,然后退出(没有清理).管道是否仍然存在?它的另一面(在不同的进程中打开)是否在CreateFile()创建过程退出时出错?

更一般地说,命名管道的寿命是多少?如何清理过时的管道?

windows pipe named-pipes

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

在bash别名中使用管道

我没有shell脚本的经验,所以我无法看到以下情况的问题:

我已经定义了以下形式的别名(file.c位于~/dir):

alias code="cd ~/dir | vim file.c"
Run Code Online (Sandbox Code Playgroud)

输入时,我收到以下警告,并且没有打开正确的文件:

Vim: Warning: Input is not from a terminal
2 files to edit
Run Code Online (Sandbox Code Playgroud)

我认为这个实例中的管道操作符会将两个命令分开,首先更改目录,然后打开文件.

bash alias pipe

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

是否有可能检测到哪个管道扔了一个SIGPIPE?

我正在尝试处理如下工作的服务器:

  • 它有一个父进程
  • 它创建了一个"帮助"子进程来处理一些特殊任务
    • 它用管道打开子进程; 并使用管道向子项发出命令.
  • 它还会产生许多其他子进程(服务器的主要目标是执行各种命令).

我希望能够检测到子进程的管道写入何时失败; 并发出特别通知.

通常,我会通过$SIG{PIPE}在父进程中创建自定义处理程序来实现这一点.

但是,我关心的是,父启动执行命令的某些进程可能会打开自己的管道; 如果写入THOSE管道失败,我想简单地忽略SIGPIPE.

Q1.有没有办法让我从SIGPIPE处理程序中告诉,哪个打开的管道发出了信号?(我知道每个孩子的PID,所以PID会很好......或者如果有办法通过文件描述符#s?).

Q2.我可以用local $SIG{PIPE}某种方式解决问题吗?我的假设是我需要:

  • local $SIG{PIPE}在写入该管道之前设置特定于助手进程的权限
  • do print $HELPER_PIPE(这只发生在一个子程序中)
  • 将$ SIG {PIPE}重置为DEFAULTIGNORE
  • 确保这3个操作都在自己的块范围内.

perl ipc pipe sigpipe

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

使bash脚本接受来自文件或管道输出的输入

我有以下bash脚本,它将表格数据作为输入,获取第一行并垂直吐出它们:

#!/bin/bash  
# my_script.sh
export LC_ALL=C
file=$1
head -n1  $file |
tr "\t" "\n" |
awk '{print $1 " " NR-1}'
Run Code Online (Sandbox Code Playgroud)

问题是我只能这样执行:

$ myscript.sh some_tab_file.txt 
Run Code Online (Sandbox Code Playgroud)

我想要做的是在上述功能之上还允许你这样做:

$ cat some_tab_file.txt myscript.sh | myscript.sh 
Run Code Online (Sandbox Code Playgroud)

即从管道输出中取出它.我怎样才能做到这一点?

unix linux bash pipe

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

重击-初始化变量以输出命令“ permission否认”

我正在编写一个小的bash脚本,以获取每个文件名中的数字。例如,文件名将helloworld1.txt产生1

尝试将输出设置为变量时i,每个文件都出现错误。

line 5: 985.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)

如果我只是回显命令echo $f | tr -dc '[0-9]'而不是将其分配给变量,那么一切都很好。

#!/bin/bash

for f in *
do
        i=`$f | tr -dc '[0-9]'` // Permission denied.
        echo $i
done
Run Code Online (Sandbox Code Playgroud)

variables bash pipe

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

grep on strace只与stderr一起工作到stdout

当我做:

sudo strace -p PID 2>&1 | grep -v "recvmsg"
Run Code Online (Sandbox Code Playgroud)

grep匹配它应该匹配的行,但是当我这样做时:

sudo strace -p PID|grep -v "recvmsg"
Run Code Online (Sandbox Code Playgroud)

它仍然显示所有呼叫.这是为什么?

linux bash grep pipe strace

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

bash脚本没有获取管道数据

我正在尝试编写一个bash脚本来操作从xsel传输的数据.

...
ary=()
while read data; do
    echo $data
    ary=( "${ary[@]}" "$data" )
done
Run Code Online (Sandbox Code Playgroud)

问题是我打电话时没有看到任何东西:

xsel | myscript.sh
Run Code Online (Sandbox Code Playgroud)

我试过了

echo "testing testing" | myscript.sh
Run Code Online (Sandbox Code Playgroud)

这确实有效,而且我也确保有来自xsel的东西

xsel | festival --tts --pipe
# will read the clipboard string piped from xsel aloud
Run Code Online (Sandbox Code Playgroud)

有什么建议?提前致谢

bash pipe

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

如何在bash脚本中测试链接是否已启动

使用此脚本我试图检测是否有网络链接.我没有将多个命令放在一行(ethtool ...).该怎么办?

#!/bin/bash

COMMAND="( /sbin/ethtool eth0 ) | ( /bin/grep \"Link detected: yes\" ) | ( wc -l )"
ONLINE=eval $COMMAND 

if $ONLINE; then 
    echo "Online"
else
    echo "Not online"
fi
Run Code Online (Sandbox Code Playgroud)

bash ethernet pipe

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

"<<<"在bash命令行上的含义是什么?它在哪里记录?

<<<在这个命令行中意味着什么?

bc <<< "1 + 1"
Run Code Online (Sandbox Code Playgroud)

它似乎并不组合<<<,我不能为它找到文档.它似乎表现得像

echo "1 + 1" | bc
Run Code Online (Sandbox Code Playgroud)

也适用于ksh,但不在sh.

unix bash command-line pipe operators

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

Linux的Max Pipe命令

我最近写了一个简单的shell.我实现管道时出现了这个问题.

我知道在Ubuntu命令行参数的最大长度为2097152.(通过)

#define MAX_CMD_LEN 2097152
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有最大数量的管道命令?例如:( n的数量)

ps -aux |?grep "a.out" | awk '{print $5}' | top | ... | cat
1       |  2            | 3                | 4   | ... | n
Run Code Online (Sandbox Code Playgroud)

linux shell pipe

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

标签 统计

pipe ×10

bash ×7

linux ×3

unix ×2

alias ×1

command-line ×1

ethernet ×1

grep ×1

ipc ×1

named-pipes ×1

operators ×1

perl ×1

shell ×1

sigpipe ×1

strace ×1

variables ×1

windows ×1