Hi again Now I want to make a program that will execute the programs with exec, asking the user if he wants the program to run in background or foreground.
Code:
scanf("%c",&caracter);
if (caracter=='y'){
printf("Has decidido ejecutarlo en background\n");
if((pid=fork())==0) {// fork para ejecutar en bg
for (i=1; i<argc; i++)
execl(argv[i],argv[i], 0);
exit(0);
}
}
else {
printf("Has decidido ejecutarlo en foreground\n");
for (i=1; i<argc; i++)
execl(argv[i],argv[i], 0);
}
Problem is, it will only execute 1 program. If i try to write ./execute /bin/ls /bin/ls only once will be shown. What's worse, when I try to debug it with ddd, ddd will also crash with a segmentation fault (this happens on foreground code).
Edit: related topics below my post may have given me the answer: is it because when you call exec(), the code of my program won't execute any more?
Last edited by lamachejo; 12-12-2011 at 10:39 AM..
hi there,
i was reading about the exec() function. and if i m not wrong, exec() kills your present process and starts a new process in its place. the process id remains the same.
then it says if exec is successful the text data and stack are overlayed by new file! -
i dont get this part "only... (2 Replies)
Hi,
Ho do I differentiate system call from library call?
for example if I am using chmod , how do I find out if it is a system call or library call?
Thanks
Muru (2 Replies)
Hi ,
Can anybody name any System Function in C/C++ for Sun-Solaris (unix) platform which can serve the alternative of execl() system function.
Actually I am calling a fork-execl() pair and then making an interprocess communication between these two(parent-child process). But the problem is... (3 Replies)
I am new in Perl.
I am working in simple script and the varibles are working well outside the exec or system command.
but they don't work as parameters to exec or system command.
The script is attached.
please help. (8 Replies)
Hi,
I have to run two commands one after another from a c program. How can i do this with exec system calls. i tried giving them as argument to execv but it is not working.please help
thanks (3 Replies)
I have a cgi script which is called after certain time interval, which has this:
system ("ls -l /tmp/cgic* | grep -v \"cgicsave.env\" | awk '{print $5}'");
During the execution of this script,the output is 0 sometimes. But due to this the system call is not working at all and doesnt o/p... (2 Replies)
hi everyone
i wrote a system call and compiled the kernel succesfully...
my system call is in a file in the kernel folder named my_syscall1.c (kernel/my_syscall1.c)
the header file for this system call i added it in the folder include like this include/my_syscall1/my_syscall1.h
my problem is... (2 Replies)
Discussion started by: demis87
2 Replies
LEARN ABOUT V7
fork
FORK(2) System Calls Manual FORK(2)NAME
fork - spawn new process
SYNOPSIS
fork( )
DESCRIPTION
Fork is the only way new processes are created. The new process's core image is a copy of that of the caller of fork. The only distinc-
tion is the fact that the value returned in the old (parent) process contains the process ID of the new (child) process, while the value
returned in the child is 0. Process ID's range from 1 to 30,000. This process ID is used by wait(2).
Files open before the fork are shared, and have a common read-write pointer. In particular, this is the way that standard input and output
files are passed and also how pipes are set up.
SEE ALSO wait(2), exec(2)DIAGNOSTICS
Returns -1 and fails to create a process if: there is inadequate swap space, the user is not super-user and has too many processes, or the
system's process table is full. Only the super-user can take the last process-table slot.
ASSEMBLER
(fork = 2.)
sys fork
(new process return)
(old process return, new process ID in r0)
The return locations in the old and new process differ by one word. The C-bit is set in the old process if a new process could not be cre-
ated.
FORK(2)