I have this code;
pid_t process;
process = fork();
if (process < 0){
//fork error
perror("fork");
exit(EXIT_FAILURE);
}
if (process == 0){
//i try here the execl
execl ("process.c", "process" , n, NULL);
}
else {
wait(NULL);
}
I don't know if this use of fork()
and exec()
combined is correct. When I try to run the program from the bash I do not receive any result, so I thought it could be a problem in this part of code.
Thanks.
One problem is that
if (process = 0){
should read
if (process == 0){
Otherwise you're assigning zero to process
and only calling execl
if result
is non-zero (i.e. never).
Also, you're trying to exec something called process.c
. There's no doubt that one could have an executable called process.c
. However, conventionally names ending in .c
are given to C source code files. If process.c
is indeed a C file, you need to compile and link it first.
Once you've built the executable, you need to either place it somewhere on $PATH
or specify its full path to execle()
. In many Unix environments placing it in the current directory won't be enough.
Finally, it's unclear what n
is in the execle()
call, but the name hints at a numeric variable. You need to make sure that it's a string and not, for example, an integer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With