C通过系统调用执行python脚本
我不知道如何从我的C代码中执行python脚本。我读到我可以将python代码嵌入C中,但我只想启动一个python脚本,就像从命令行执行它一样。我尝试了以下代码:C通过系统调用执行python脚本,python,c,Python,C,我不知道如何从我的C代码中执行python脚本。我读到我可以将python代码嵌入C中,但我只想启动一个python脚本,就像从命令行执行它一样。我尝试了以下代码: char * paramsList[] = {"/bin/bash", "-c", "/usr/bin/python", "/home/mypython.py",NULL}; pid_t pid1, pid2; int status; pid1 = fork(); if(pid1 == -1) { char err[]="
char * paramsList[] = {"/bin/bash", "-c", "/usr/bin/python", "/home/mypython.py",NULL};
pid_t pid1, pid2;
int status;
pid1 = fork();
if(pid1 == -1)
{
char err[]="First fork failed";
die(err,strerror(errno));
}
else if(pid1 == 0)
{
pid2 = fork();
if(pid2 == -1)
{
char err[]="Second fork failed";
die(err,strerror(errno));
}
else if(pid2 == 0)
{
int id = setsid();
if(id < 0)
{
char err[]="Failed to become a session leader while daemonising";
die(err,strerror(errno));
}
if (chdir("/") == -1)
{
char err[]="Failed to change working directory while daemonising";
die(err,strerror(errno));
}
umask(0);
execv("/bin/bash",paramsList); // python system call
}
else
{
exit(EXIT_SUCCESS);
}
}
else
{
waitpid(pid1, &status, 0);
}
我能做什么
提前感谢您使用
char*paramsList[]={/usr/bin/python“,“/tmp/bla.py”,NULL}代码>和execv(“/usr/bin/python”,paramsList);//python系统调用
导致使用char*paramsList[]={/usr/bin/python“,“/tmp/bla.py”,NULL}成功调用名为bla.py的python脚本代码>和execv(“/usr/bin/python”,paramsList);//python系统调用
导致从Bash成功调用名为bla.py的python脚本:
例如
但是,您不想指定位置参数,因此将paramList
更改为
char * paramsList[] = { "/bin/bash", "-c",
"/usr/bin/python /home/mypython.py", NULL };
从Bash中:
例如
但是,您不想指定位置参数,因此将paramList
更改为
char * paramsList[] = { "/bin/bash", "-c",
"/usr/bin/python /home/mypython.py", NULL };
你能完全跳过bash调用而只调用python吗?你能完全跳过bash调用而只调用python吗?
$ bash -c 'echo x $0 $1 $2' foo bar baz
x foo bar baz
char * paramsList[] = { "/bin/bash", "-c",
"/usr/bin/python /home/mypython.py", NULL };