簡體   English   中英

Mac OS X open命令的C標頭或等效命令

[英]C header for Mac OS X open Command or equivalent

我已經讀過這些:

我正在嘗試從打開命令中獲取PID。 我們有一個內部的多平台C ++庫,例如(過於簡化):

pid = launch(char* command) 
// Many other parameters and variations (sync/async,timeout,stdout,stderr,stdin )

但是,在OS X上,庫用戶通常使用以下命令:

Open myExe myArgs -F

它似乎:

  • 無法阻止open命令分離子進程。 (超時時有殺死的問題)
  • 沒有辦法讓孩子PID回來

我非常歡迎任何解決方案:

  • open命令是否有ac標頭? “ man open”僅給出shell命令和打開“ file” c函數。 也許這個功能會給我更多的控制權
  • 有沒有一種方法可以在調用execve時“模擬” c ++中open的行為? 我的意思是清理緩存並將應用程序置於前台(-F而不是 -g)
  • ...

回到寫我的解決方法的答案,我不喜歡它,因為我確實需要使用一些可可粉,但是它可以工作...

我已經獲得了所需的“前景”行為,並使用以下代碼獲得了Pid:

NSString * arg1 = @"--my_arg";
NSString * arg2 = @"arg_value";
NSArray  * myArray2 = [NSArray arrayWithObjects:arg1,arg2,nil];

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:myArray2 forKey:NSWorkspaceLaunchConfigurationArguments];

bURL = [NSURL fileURLWithPath:@"/path/to/appli.app"];
NSRunningApplication * inst = [ws launchApplicationAtURL:bURL options:NSWorkspaceLaunchNewInstance configuration:dict error:nil];
pid_t pid = [inst processIdentifier];

在Xcode中,可以在我的file.mm中使用上面的代碼,其簽名在我的file.h中聲明。 Xcode將自動管理可可粉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM