我在命名的Linux BASH,命名的管道等中还相当陌生。 我正在遵循本文的一个示例: https://www.linuxjournal.com/content/using-named-pipes-fifos-bash 一切正常,并且符合预期。但是,这仅仅是开始。 我希望能够从阅读器中调用编写器脚本,以在管道中的两个脚本之间传递信息,而不必为编写器脚本创建cron作业。
这个想法是有人在没有提升权限的情况下触发了阅读器脚本。 读取器呼叫具有一些硬编码sudo用户的写入器(出于测试目的),评估数据并将结果返回给读取器。 任何建议表示赞赏。
答案 0 :(得分:0)
据我了解,您需要满足以下条件:
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;
done
reader.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
fi