Forum > Linux
Failed to fork a process error in raspberry pi
(1/1)
gayathri:
Hello All,
I am starting a process using TProcess in raspberry pi. This is done in a loop. The loop runs successfully for half a day and then stops with an error 'Failed to fork a process'.
This is the code that I am using:
command:='sudo /sbin/ip link set __INTERFACE__ up type can bitrate __BAUDRATE__';
command := StringReplace(command,'__INTERFACE__',interfacename,[]);
command := StringReplace(command,'__BAUDRATE__',baudrate,[]);
AProcess := TProcess.Create(nil);
AProcess.Options := AProcess.Options + [poWaitOnExit,poUsePipes];
AProcess.CommandLine:=command;
Aprocess.Execute;
if AProcess.ExitStatus=0 then
Result:=0
else
Result:=-1;
AProcess.Free;
I have tried adding AProcess.WaitForExit after Aprocess.Execute line and also tried manually killing the Aprocess using the function fpKill(AProcess.ProcessID,SIGKILL) or also used this function fpKill(AProcess.ProcessID,SIGINT).
I have also tried removing poUsePipes option.
None of them is working out and the same error occurs again and again.
Please help me in finding a solution for this problem.
Thanks!
Regards,
Gayathri
marcov:
I've no experience with TProcess and sudo commands, but :
My guess is that first working but then later stopping means that you leak processes somewhere and hit the process limit. This is probably because sudo is special.
Some tips:
* .commandline is deprecated, use the new style, and specially in this case
* if you have programs that run a commandline for you, like sudo or sh -c, it might be that the whole commandline should be in one argument
* avoid pousepipes since you don't need it.
* Try first executing a shell (so sh,' -c','sudo ...')
If the problem persist, try to find out which process leaks (sudo or the child process, or another one spawned by "ip"), and/or use strace.
Navigation
[0] Message Index