#!/bin/bash # # Copyright (C) 2021 Masatake YAMATO # # This file is part of util-linux. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # TS_TOPDIR="${0%/*}/../.." TS_DESC="--pid option" . $TS_TOPDIR/functions.sh ts_init "$*" ts_skip_nonroot ts_check_test_command "$TS_CMD_LSFD" ts_check_test_command "$TS_HELPER_MKFDS" ts_check_prog "ps" ts_cd "$TS_OUTDIR" [ "$(ps --no-headers -o comm 1)" = 'systemd' ] || ts_skip "pid 1 is not systemd" PID= FD=3 EXPR= QOUT= POUT= { coproc MKFDS { "$TS_HELPER_MKFDS" ro-regular-file $FD file=/etc/group; } if read -u ${MKFDS[0]} PID; then EXPR='((PID == '"${PID}"') or (PID == 1)) and (FD == '"$FD"')' QOUT=$(${TS_CMD_LSFD} -n -o ASSOC,MODE,TYPE,FLAGS,NAME -Q "${EXPR}") echo "QOUT:" $? POUT=$(${TS_CMD_LSFD} --pid="1 $PID" -n -o ASSOC,MODE,TYPE,FLAGS,NAME -Q "(FD == $FD)") echo "POUT[--pid=1 PID]:" $? [ "${QOUT}" = "${POUT}" ] echo "EQ[--pid=1 PID]:" $? POUT=$(${TS_CMD_LSFD} --pid="$PID 1" -n -o ASSOC,MODE,TYPE,FLAGS,NAME -Q "(FD == $FD)") echo "POUT[--pid=PID 1]:" $? [ "${QOUT}" = "${POUT}" ] echo "EQ[--pid=PID 1]:" $? POUT=$(${TS_CMD_LSFD} --pid="1,$PID" -n -o ASSOC,MODE,TYPE,FLAGS,NAME -Q "(FD == $FD)") echo "POUT[--pid=1,PID]:" $? [ "${QOUT}" = "${POUT}" ] echo "EQ[--pid=1,PID]:" $? POUT=$(${TS_CMD_LSFD} --pid="$PID,1" -n -o ASSOC,MODE,TYPE,FLAGS,NAME -Q "(FD == $FD)") echo "POUT[--pid=PID,1]:" $? [ "${QOUT}" = "${POUT}" ] echo "EQ[--pid=PID,1]:" $? POUT=$(${TS_CMD_LSFD} -p 1 --pid="$PID" -n -o ASSOC,MODE,TYPE,FLAGS,NAME -Q "(FD == $FD)") echo "POUT[-p 1 --pid=PID]:" $? [ "${QOUT}" = "${POUT}" ] echo "EQ[-p 1 --pid=PID]:" $? POUT=$(${TS_CMD_LSFD} -p "$PID" --pid=1 -n -o ASSOC,MODE,TYPE,FLAGS,NAME -Q "(FD == $FD)") echo "POUT[-p PID --pid=1]:" $? [ "${QOUT}" = "${POUT}" ] echo "EQ[-p PID --pid=1]:" $? kill -CONT ${PID} wait ${MKFDS_PID} fi } > $TS_OUTPUT 2>&1 ts_finalize