When a process fork(), the child share the same file descriptors as his father. Thus, they share the same stdin. Quick and dirty exemple below (sorry for the ugly gets() call) :
Question 1 :
If I'm right, after the fork(), the parent and the child belong to the same group process which is a foreground group and which share the same console. As there is a concurrent read on stdin, I was thinking that the process that read the lines in input is pick up randomly. However, on my Linux system, the child always read first. Is it normal ?
Question 2:
If I launch the command like that :
I was thinking that after the redirection, the parent and the child would both write on /tmp/foobar. But the /tmp/foobar file remains totaly empty !
Why ?
hi,
how does a program know whether some data are available from stdin?
I would like to make a program which could read its data from stdin
and _if_there_is_nothing_at_stdin_ from a file which name is given
as an argument. If there is nothing in stdin and no filename is given as
argument,... (2 Replies)
How can I access the standard-in device in HP-UX? I am trying to automate sftp on an HP-UX system. On solaris I can just do:
sftp -b /dev/fd/0 remotehost <<EOF
cd pub
ascii
get filename.txt
bye
EOF (2 Replies)
can you redirect STDIN with command arguments?
I have tried this approach:
# ./script -option <argument1> <argument2> 0<$2
# $2: ambiguous redirect
Is this possible? (4 Replies)
Hi,
Program A: uses pipe()
I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using:
* child
-> dup2(fd, STDOUT_FILENO);
-> execl("/path/PROGRAM B", "PROGRAM B", NULL);
* parent
-> char line;
-> read(fd, line, 100);
Question:
---------... (1 Reply)
Hi,
Program A: uses pipe()
I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using:
* child
-> dup2(fd, STDOUT_FILENO);
-> execl("/path/PROGRAM B", "PROGRAM B", NULL);
* parent
-> char line;
-> read(fd, line, 100);
Question:... (2 Replies)
Hi,
Program A: uses pipe()
I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using:
* child
-> dup2(fd, STDOUT_FILENO);
-> execl("/path/PROGRAM B", "PROGRAM B", NULL);
* parent
-> char line;
-> read(fd, line, 100);
Question:
---------... (3 Replies)
Hi
I'm trying to do something on the bash command line that I will later put into a bash shell script.
I'm trying to take a program that reads stdin (using getline) and be able to keep it running in the background and fire "commands" to it. So what I thought I should do was to try taking... (3 Replies)
Bonjour,
Mon application en C sous linux tourne en redirigeant stdin vers un fichier.
Exemple; $appli1 <file1.
PB: Je voudrais temporairement redonner la main au user sur le clavier.
Alors je pensais ajouter system("appli2"); dans appli1.
Dans son main() , appli2() fait seulement un... (1 Reply)
Hello,
my C application under unix runs in redirecting stdin to a file.
Example:$appli1 <file1. This application waits often on a scanf().
But I would temporarely reassign stdin at the keyboard for waiting a user's answer. So I thought to add system("appli2"); in the code of appli1. In its... (4 Replies)
Good morning!
How do I make the info that someone inputs from @userArray = <STDIN>, a new array?
@userArray = <STDIN>;
while ()
{
chomp;
last if ! /\d/;
push(@userArray,$_);
}
my($sum,$avg) = &sumIt(@userArray);
print "Total:$sum\nAverage:$avg\n";
Im... (2 Replies)
Discussion started by: bigben1220
2 Replies
LEARN ABOUT REDHAT
fork
FORK(2) Linux Programmer's Manual FORK(2)NAME
fork - create a child process
SYNOPSIS
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
DESCRIPTION
fork creates a child process that differs from the parent process only in its PID and PPID, and in the fact that resource utilizations are
set to 0. File locks and pending signals are not inherited.
Under Linux, fork is implemented using copy-on-write pages, so the only penalty incurred by fork is the time and memory required to dupli-
cate the parent's page tables, and to create a unique task structure for the child.
RETURN VALUE
On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of exe-
cution. On failure, a -1 will be returned in the parent's context, no child process will be created, and errno will be set appropriately.
ERRORS
EAGAIN fork cannot allocate sufficient memory to copy the parent's page tables and allocate a task structure for the child.
ENOMEM fork failed to allocate the necessary kernel structures because memory is tight.
CONFORMING TO
The fork call conforms to SVr4, SVID, POSIX, X/OPEN, BSD 4.3.
SEE ALSO clone(2), execve(2), vfork(2), wait(2)Linux 1.2.9 1995-06-10 FORK(2)