Question

#include<iostream>
#include<spawn.h>
#include<stdlib.h>
#include<sys/wait.h>
using namespace std;

int main(int argc,char *argv[],char *envp[])
{
pid_t c1,c2;
int ret1,ret2,val;
ret1=posix_spawn(&c1,"t.cpp",NULL,NULL,argv,envp);
ret2=posix_spawn(&c2,"t.cpp",NULL,NULL,argv,envp);
wait(&val);
wait(&val);
cout<<"\n\nChild Process 1: "<<c1;
cout<<"\n\nChild Process 2: "<<c2;
cout<<"\n\n"<<ret1;
cout<<"\n\n"<<ret2<<"\n";
}

Above code creates 2 child processes and each process in supposed to execute t.cpp which is a simple hello world code in c++. But it doesnt execute it. In fact this code works without creating even t.cpp. Can anyone explain why is this happening and how to execute t1.cpp?

Was it helpful?

Solution

This is the way of creating new process:

posix_spawn(&Pid,"my_exe",NULL,NULL,argv,envp);

where my_exe is the executable file created after I build the program. In your case t will be the executable created after you build the program.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top