11-14-2008
Quote:
Originally Posted by
nicos
I want to print the result of execve sys call (the output of the program), both in stdout and in a file without the need to execute it twice?
thanx
So what you need to do is to pipe the output of the exec call back to the calling process. The calling process will read the output of the exec call and call print/write for each file-descriptor you want to write to. You can, alternatively, fork/exec a tee process, and join the output of your execve call (above) into the input of the tee process.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hello everybody,
Is there a more elegant way to make dual output (display on standard output and append to a file) while I'm executing a shell script, besides duplicating the echo command for every string?
echo "Message..." > 1
echo "Message..." >> myfile.out
Thank you for your time,... (2 Replies)
Discussion started by: AdrianM
2 Replies
2. Shell Programming and Scripting
hello hackers.
i have a curl process running as cgi directly pushing stdout to the client. but i want to additionally save that stream to a file at the same time.
any directions madly welcome.
thanks in advance (3 Replies)
Discussion started by: scarfake
3 Replies
3. Shell Programming and Scripting
I am trying to have a script ping all the clients then output it to a file so I know which clients are off then have the next script pull the ones that are online and reboot them.
This is what I am running with right now. If there is something KISS then by all means please let me know.
... (3 Replies)
Discussion started by: deaconf19
3 Replies
4. Shell Programming and Scripting
hi
i m trying to print the permissions for a file in output
echo name
read name
touch name.txt
permission=$((ls -l $name.txt))
echo permission
please suggest where i went wrong? (2 Replies)
Discussion started by: angel12345
2 Replies
5. Shell Programming and Scripting
Using echo command, send output to both places. I think I knew this but forgot. Thanks in advance (2 Replies)
Discussion started by: stevensw
2 Replies
6. Shell Programming and Scripting
Hi All,
I have around 900 Select Sql's which I would like to run in an awk script and print the output of those sql's in an txt file.
Can you anyone pls let me know how do I do it and execute the awk script? Thanks. (4 Replies)
Discussion started by: adept
4 Replies
7. Shell Programming and Scripting
Hello all. I've been lurking here for a year or two and finally decided to post.
I need some assistance with file descriptors, stdout, and redirecting output. I've searched through a number of very helpful threads here (unfortunately I can't link to any of them yet due to my low post count...),... (2 Replies)
Discussion started by: Michael_K
2 Replies
8. Shell Programming and Scripting
Hi Friends,
This is the only solution to my task. So, any help is highly appreciated.
I have a file
cat input1.bed
chr1 100 200 abc
chr1 120 300 def
chr1 145 226 ghi
chr2 567 600 unix
Now, I have another file by name
input2.bed (This file is a binary file not readable by the... (7 Replies)
Discussion started by: jacobs.smith
7 Replies
9. Shell Programming and Scripting
I have a python script that gives output called test.png. By using the following command I run the script every 2 seconds. What is the easiest way to save the output as follows ( test.png (1st output), tes1.png (second output), tes2.png ....)
Command I i use
while sleep 2; do python... (1 Reply)
Discussion started by: quincyjones
1 Replies
10. UNIX for Beginners Questions & Answers
Why does this until false; do history | head -5; done
result in a stdout infinite loop, yet until false; do history | head -5 > hist5; done
only writes it once to file hist5? Furthermore, I can hear the hard drive working on the 2nd command until I end the process, but the history | head -5 is... (1 Reply)
Discussion started by: Xubuntu56
1 Replies
FORK(2) BSD System Calls Manual FORK(2)
NAME
fork -- create a new process
SYNOPSIS
#include <unistd.h>
pid_t
fork(void);
DESCRIPTION
Fork() causes creation of a new process. The new process (child process) is an exact copy of the calling process (parent process) except for
the following:
o The child process has a unique process ID.
o The child process has a different parent process ID (i.e., the process ID of the parent process).
o The child process has its own copy of the parent's descriptors. These descriptors reference the same underlying objects, so that,
for instance, file pointers in file objects are shared between the child and the parent, so that an lseek(2) on a descriptor in the
child process can affect a subsequent read or write by the parent. This descriptor copying is also used by the shell to establish
standard input and output for newly created processes as well as to set up pipes.
o The child processes resource utilizations are set to 0; see setrlimit(2).
RETURN VALUES
Upon successful completion, fork() returns a value of 0 to the child process and returns the process ID of the child process to the parent
process. Otherwise, a value of -1 is returned to the parent process, no child process is created, and the global variable errno is set to
indicate the error.
ERRORS
Fork() will fail and no child process will be created if:
[EAGAIN] The system-imposed limit on the total number of processes under execution would be exceeded. This limit is configuration-
dependent.
[EAGAIN] The system-imposed limit MAXUPRC (<sys/param.h>) on the total number of processes under execution by a single user would
be exceeded.
[ENOMEM] There is insufficient swap space for the new process.
LEGACY SYNOPSIS
#include <sys/types.h>
#include <unistd.h>
The include file <sys/types.h> is necessary.
SEE ALSO
execve(2), sigaction(2), wait(2), compat(5)
HISTORY
A fork() function call appeared in Version 6 AT&T UNIX.
CAVEATS
There are limits to what you can do in the child process. To be totally safe you should restrict yourself to only executing async-signal
safe operations until such time as one of the exec functions is called. All APIs, including global data symbols, in any framework or library
should be assumed to be unsafe after a fork() unless explicitly documented to be safe or async-signal safe. If you need to use these frame-
works in the child process, you must exec. In this situation it is reasonable to exec yourself.
4th Berkeley Distribution June 4, 1993 4th Berkeley Distribution