我在命名Linux BASH、命名管道等方面还是个新手。我遵循了本文中的一个示例:https://www.linuxjournal.com/content/using-named-pipes-fifos-bash都工作得很好,正如预期的那样。然而,这仅仅是个开始。我希望能够从阅读器调用编写器脚本,在管道中的2个脚本之间传递信息,而不必为编写器脚本创建cron作业。
其想法是,有人在没有提升权限的情况下触发阅读器脚本。读取器调用具有某些硬编码sudo用户的写入器(出于测试目的),评估数据并将结果返回给读取器。任何建议都是非常感谢的。
发布于 2018-08-03 22:34:22
据我所知,您需要满足以下条件:
1和2可以使用以下脚本,其中:
sh writer.sh & 3是不可能的,因为:
writer.sh
#!/bin/bash
# Store the value of the writer process
echo $$ > /tmp/pid
# Specify location of named pipe
pipe=/tmp/datapipe
# Create Data pipe if it doesn't exist
if [[ ! -p $pipe ]]; then
echo "Pipe does not exist. Creating..."
mkfifo $pipe
fi
# Send data to pipe
echo "Hello" >$pipe
# Send data to pipe based on trigger
function write_data {
echo "Writing data"
echo "Here is some data" >$pipe &
}
# Kill process based on trigger
function kill {
echo "Exiting"
exit
}
# Listen for signals
trap write_data SIGINT
trap kill KILL
# listen
while true; do
sleep 1;
donereader.sh
#!/bin/bash
pipe=/tmp/datapipe
# Read the writer pid
pid=$(cat /tmp/pid)
# Trigger writer to create data
kill -s SIGINT $pid
# Read data from named pipe
if read line <$pipe; then
echo $line
fihttps://stackoverflow.com/questions/51633182
复制相似问题