Objective c Mac应用程序';s窗口被其他应用程序替换';是由execv推出的

Objective c Mac应用程序';s窗口被其他应用程序替换';是由execv推出的,objective-c,macos,process,nswindow,appkit,Objective C,Macos,Process,Nswindow,Appkit,我使用fork和excev启动了一个应用程序。该应用程序已成功启动,但我的主窗口已消失,并被此新应用程序替换 if (fork()) { const char app[] = "other app path"; NSString *tmp = [NSString stringWithFormat:@"%ld", window.windowNumber]; const char *str = [tmp UTF8String];

我使用fork和excev启动了一个应用程序。该应用程序已成功启动,但我的主窗口已消失,并被此新应用程序替换

if (fork()) {
    const char app[] = "other app path";
    NSString *tmp = [NSString stringWithFormat:@"%ld", window.windowNumber];
    const char *str = [tmp UTF8String];
    const char *argv[] = { app, (char *)str,NULL};
    if (execv(app,  (char * const *)argv) < 0) {
        perror("execv error");
    }
}
if(fork()){
const char app[]=“其他应用程序路径”;
NSString*tmp=[NSString stringWithFormat:@“%ld”,window.windowNumber];
const char*str=[tmp UTF8String];
常量char*argv[]={app,(char*)str,NULL};
if(execv(app,(char*const*)argv)<0){
perror(“执行错误”);
}
}
我需要我的主窗口存在,我怎么做


事实上,我真正想要的是从其他应用程序在我的应用程序窗口中绘制一些东西。我的想法是将nswindow的sharingtype设置为NSWindowsShareingReadWrite,然后其他应用程序可以访问nswindow的Connett。我不知道我的想法是否有效,如果您对如何操作有任何想法,请让我知道,谢谢~

emm…我找到了为什么窗口被新应用程序的窗口替换,因为我在fork()返回值大于0时调用它,这意味着execv在父进程中运行。结果是我应该将条件更改为(fork()==0)。。。但我高兴得太早了。子进程启动得很好,但我无法在子进程中获取窗口指针。我真的很受伤。。