有没有一种办法之间连续运行的C程序,并持续运行Python程序传递数据? 至关重要的是,C程序先启动。
到目前为止,我有(对于C面):
void run_cmd(char *cmd[])
{
int parentID = getpid();
char str[1*sizeof(double)];
sprintf(str, "%d", parentID);
char* name_with_extension;
name_with_extension = malloc(2+strlen(cmd[1])+1*sizeof(int)+1);
strcat(name_with_extension, cmd[1]);
strcat(name_with_extension, " ");
strcat(name_with_extension, str);
pid_t pid;
char *argv[] = {"sh", "-c", name_with_extension, NULL};
int status;
//printf("Run command: %s\n", cmd);
status = posix_spawn(&pid, "/bin/sh", NULL, NULL, argv, environ);
if (status == 0) {
//printf("Child pid: %i\n", pid);
//printf("My process ID : %d\n", getpid());
//if (waitpid(pid, &status, 0) != -1) {
// printf("Child exited with status %i\n", status);
//} else {
// perror("waitpid");
//}
//part below is not tested and will probably not work
int myout[2];
pipe(myout);
int status;
int ch;
do {
if (read(myout[0], &ch, 1)>0){
write(1, &ch, 1);
}
waitpid(pid, &status, WNOHANG);
} while (!WIFEXITED(status) && !WIFSIGNALED(status));
}
}
对于Python,我只能得到的参数列表现在使用:
print 'Arguments ', str(sys.argv)
当我从资料了解,subprocess.Popen不长的路要走,因为它会创建一个新的进程,这是我不想要的。
在Python(或倒数) 嵌入 C不是一种选择,因为代码太大。
我想用进程ID,并可能进行通信之间的数据插口 ,但不能确定,需要一些建议。
其目的是在Windows做到这一点,但统一的单一实施效果会更好。