Sponsored Content
Top Forums Shell Programming and Scripting Doubt about pipes and subprocess Post 302388859 by jim mcnamara on Thursday 21st of January 2010 04:33:26 PM
Old 01-21-2010
Expanding a bit on the good explanations above:

When you ask the shell to run the "cat" command the shell calls one of the exec functions:
Quote:
int execl(const char *path, const char *arg0, ..., const
char *argn, char * /*NULL*/);

int execv(const char *path, char *const argv[]);

int execle(const char *path, const char *arg0, ..., const
char *argn, char * /*NULL*/, char *const envp[]);

int execve(const char *path, char *const argv[], char *const
envp[]);

int execlp(const char *file, const char *arg0, ..., const
char *argn, char * /*NULL*/);

int execvp(const char *file, char *const argv[]);
The result is the cat executable is then running in the new process, not the shell.
When the process ends, the shell resumes in the parent process which waited for the cat process to end.
 

10 More Discussions You Might Find Interesting

1. Filesystems, Disks and Memory

PIPEs and Named PIPEs (FIFO) Buffer size

Hello! How I can increase or decrease predefined pipe buffer size? System FreeBSD 4.9 and RedHat Linux 9.0 Thanks! (1 Reply)
Discussion started by: Jus
1 Replies

2. Shell Programming and Scripting

doubt about pipes

can we use pipes to redirect the output of any command to grep ..... like i wanted to write this script about checking the online status of a certain user so ...can i send the output of who to grep directly using pipes... one way was this : who > temp grep $uname temp i was wondering if... (4 Replies)
Discussion started by: evergreen_cool
4 Replies

3. Shell Programming and Scripting

How to wait for the subprocess to finish in tcl

Hi All Here i have a piece of code, set filename "./GopiRun.sh" #I need to wait here until the GopiRun.sh is completed how do i achive this exit. (1 Reply)
Discussion started by: nathgopi214
1 Replies

4. AIX

Subprocess errors

Hi Guys, Just a question about subprocesses.. Lately one of our servers has started to throw out the following error: SYSTEM ERROR: Too many subprocesses, cannot fork. Errno=12 We've already increased the threshold twice. Its now up to 8000 and the swap space has also been increased. We... (6 Replies)
Discussion started by: Jazmania
6 Replies

5. Shell Programming and Scripting

python: what's wrong with my subprocess.Popen

my script is #!/usr/bin/env python import datetime import subprocess import sys import os import signal from time import sleep def runForAWhile(cmd, secs=10): print("running %s" % cmd) timeout = datetime.timedelta(seconds=secs) print timeout proc = subprocess.Popen(cmd,... (0 Replies)
Discussion started by: yanglei_fage
0 Replies

6. Shell Programming and Scripting

Python subprocess module

I need to run this command using python subprocess module (notice I'm using only variables): cmd = TESTPATH + ' -s ' + serviceName + ' -r ' + rdir + \ ' -m ' + masterAcct + ' -p ' + persona + ' -P ' + passwd (3 Replies)
Discussion started by: erick_tuk
3 Replies

7. Shell Programming and Scripting

Xterm using python subprocess

Hi, I am trying to run a shell script using subprocess in python. I can run simple script with arguments using subprocess.But I am not able to embed xterm in subrocess command. #!/usr/bin/python import subprocess subprocess.call() Above code gives me error. Please help me in... (2 Replies)
Discussion started by: diehard
2 Replies

8. Shell Programming and Scripting

Python subprocess

Hi guys, I'm learning python and perl and i was trying to run from python a perl script using the subprocess module. I have an issue that i don't understand regarding this. I run this code: #!/usr/bin/python import subprocess p2 = subprocess.Popen(,stdout=subprocess.PIPE) output2 =... (2 Replies)
Discussion started by: capitanui
2 Replies

9. Shell Programming and Scripting

Python3 subprocess troubles

After struggling with this for days now, I'm reaching out to the experts of all things linux for some help with this. I'm trying to run the following working command (on command line) inside a python script using subprocess: rsync -avzh --no-perms --delete --include="*sub*" --exclude='*'... (2 Replies)
Discussion started by: timj123
2 Replies

10. Programming

[Python] - subprocess issue

So I have this basic script, see below import subprocess import shlex command = "gcloud projects list" subprocess.check_output(shlex.split(command)) subprocess.check_call(shlex.split(command)) The subprocess.check_call(shlex.split(command)) actually return what I expect. It returns... (6 Replies)
Discussion started by: scj2012
6 Replies
EXECL(3)						     Library Functions Manual							  EXECL(3)

NAME
execl, execv, execle, execlp, execvp, exec, environ - execute a file SYNOPSIS
#include <unistd.h> int execl(const char *name, const char *arg0, ..., (char *) NULL) int execv(const char *name, char *const argv[]) int execle(const char *name, const char *arg0, ..., (char *) NULL, char *const envp[]) int execlp(const char *name, const char *arg0, ..., (char *) NULL) int execvp(const char *name, char *const argv[]) extern char *const *environ; DESCRIPTION
These routines provide various interfaces to the execve system call. Refer to execve(2) for a description of their properties; only brief descriptions are provided here. Exec in all its forms overlays the calling process with the named file, then transfers to the entry point of the core image of the file. There can be no return from a successful exec; the calling core image is lost. The name argument is a pointer to the name of the file to be executed. The pointers arg[0], arg[1] ... address null-terminated strings. Conventionally arg[0] is the name of the file. Two interfaces are available. execl is useful when a known file with known arguments is being called; the arguments to execl are the char- acter strings constituting the file and the arguments; the first argument is conventionally the same as the file name (or its last compo- nent). A null pointer argument must end the argument list. (Note that the execl* functions are variable argument functions. This means that the type of the arguments beyond arg0 is not checked. So the null pointer requires an explicit cast to type (char *) if not of that type already.) The execv version is useful when the number of arguments is unknown in advance; the arguments to execv are the name of the file to be exe- cuted and a vector of strings containing the arguments. The last argument string must be followed by a null pointer. When a C program is executed, it is called as follows: int main(int argc, char *const argv[], char *const envp[]); exit(main(argc, argv, envp)); where argc is the argument count and argv is an array of character pointers to the arguments themselves. As indicated, argc is convention- ally at least one and the first member of the array points to a string containing the name of the file. Argv is directly usable in another execv because argv[argc] is 0. Envp is a pointer to an array of strings that constitute the environment of the process. Each string consists of a name, an "=", and a null-terminated value. The array of pointers is terminated by a null pointer. The shell sh(1) passes an environment entry for each global shell variable defined when the program is called. See environ(7) for some conventionally used names. The C run-time start-off routine places a copy of envp in the global cell environ, which is used by execv and execl to pass the environment to any subprograms executed by the current program. Execlp and execvp are called with the same arguments as execl and execv, but duplicate the shell's actions in searching for an executable file in a list of directories. The directory list is obtained from the environment variable PATH. Under standard Minix, if a file is found that is executable, but does not have the proper executable header then it is assumed to be a shell script. Execlp and execvp exe- cute /bin/sh to interpret the script. Under Minix-vmd this does not happen, a script must begin with #! and the full path name of the interpreter if it is to be an executable script. SEE ALSO
execve(2), fork(2), environ(7), sh(1). DIAGNOSTICS
If the file cannot be found, if it is not executable, if it does not start with a valid magic number (see a.out(5)), if maximum memory is exceeded, or if the arguments require too much space, a return constitutes the diagnostic; the return value is -1 and errno is set as for execve. Even for the super-user, at least one of the execute-permission bits must be set for a file to be executed. 4.2 Berkeley Distribution April 25, 1986 EXECL(3)
All times are GMT -4. The time now is 08:21 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy