I've been told I can't use a temporary file in this program, what should I do? [closed]

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

I've been told I can't use a temporary file in this program, the program displays the PID and the name of every running program which was submitted on March 23

Sample ps-eaf

choi-b83 27676 27625  0 02:01 ?        00:00:00 sshd: choi-b83@pts/10
choi-b83 27677 27676  0 02:01 pts/10   00:00:00 -csh
choi-b83 27741 27066  0 Mar26 pts/2    00:00:00 mail acs2941@pearl.uwinnipeg.ca
root     28724     2  0 Apr03 ?        00:00:00 [kworker/1:1]
root     31377     2  0 Mar29 ?        00:00:00 [kworker/u8:0]

Expected output

8644 00:00:03 [kworker/0:0]
28724 00:00:00 [kworker/1:1]

What should I do?

ps -eaf|while read p;do echo $p;
done>/tmp/process$$;mv /tmp/process$$ process;
cat process|grep Mar23|cut -f2,8,9,10,12,13 -d' '
profilepic.png
manpreet 2 years ago

 

Use command substitution instead of a temporary file. With command substitution, the output of the program goes into a variable that you can use from the script.

text=$(…)

Then, if you want to pass the content of the variable to a command, use

printf '%s\n' "$text" | 

Some other remarks on your code:

  • while read p;do echo $p; done does nothing except mangle some whitespace and backslashes. Remove that bit.
  • Put some whitespace around operators. Even where the computer doesn't need it, humans do. Conventionally, put a space on both sides of | and &, after ;, and before > and <.
  • If you did need to create a temporary file, /tmp/process$$ is insecure. Use mktemp instead.

Without removing the temporary file logic, that's

ps -eaf >/tmp/process$$
mv /tmp/process$$ process
cat process | grep Mar23 | cut -f2,8,9,10,12,13 -d' '

which you then need to transform to use command substitution instead.


0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.