青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

Find path of an application

Posted on 2012-04-18 22:44 RTY 閱讀(624) 評論(0)  編輯 收藏 引用 所屬分類: C/C++Mac os
Mailing Lists: Apple Mailing Lists
Image of Mac OS face in stamp
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Find path of an application


  • SubjectRe: Find path of an application
  • From: Terry Lambert <email@hidden>
  • Date: Tue, 16 Dec 2008 02:01:54 -0800
  • Delivered-to: email@hidden
  • Delivered-to: email@hidden

On Dec 16, 2008, at 1:00 AM, Rakesh Singhal wrote:
I am done with finding the process is running or not. Thanks a lot. Still I am stuck with second issue to find the path to my application in my system. Actually there are 3 steps:

1. To know that application is running or not?  Now it is done. 2. If not then get the path of application where it was installed (user can change the path during installation). 3. Launch the application.

My code is standard C++ tool so I want to use only C and C++ APIs. Please suggest me. 

You said this was a GUI app that you didn't control the sources to. So control it anyway by renaming the binary in the bundle and putting a stub in there that will save off the id for you and then reexec the real binary:


--- example with no error checking --- #include <mach-o/dyld.h>	/* _NSGetExecutablePath */ #include <limits.h>		/* PATH_MAX */ #include <unistd.h>		/* execve */ #include <libgen.h>		/* dirname */ #include <string.h>		/* strcpy */

#define BINARYNAME	"myreal_executable"

int main(int ac, char *av[]) { 	char pathbuf[PATH_MAX + 1]; 	char real_executable[PATH_MAX + 1]; 	char *bundle_id; 	int  bufsize = sizeof(pathbuf);

	_NSGetExecutablePath( pathbuf, &bufsize);

	bundle_id = dirname(pathbuf);

	strcpy(real_executable, bundle_id); 	strcat(real_executable, "/"); 	strcat(real_executable, BINARYNAME);

	execv(real_executable, av); } --------------------

Then write the path into /var/run/program.<pid> before you do the execv call to give control to the real binary.

Then in your other program go looking for /var/run/program.*. When you find one, take the pid and do an atoi() on it to get the integer pid back. Then end it a kill(pid, 0).

This function will return one of three things:

(1) 0, indicating that the process exists and you have the right to send it signals

(2) -1, with errno set to EPERM, indicating that the process exists and you do not have rights to send it a signal

(3) -1, with errno set to ESRCH, indicating that the process does not (yet) exist

-

Ideally, all this would be unnecessary because you put your daemon and the program you want to give it a UI into the same bundle, which ,means either one of them can find the other by looking at the dirname() from their own call to _NSGetExecutablePath().

No grovelling around trying to find out where something came from, because it tells you.

-- Terry _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list      (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden  
References: 
 >Find path of an application (From: "Rakesh Singhal" <email@hidden>)
 >Re: Find path of an application (From: Jean-Daniel Dupas <email@hidden>)
 >Re: Find path of an application (From: "Rakesh Singhal" <email@hidden>)
 >Re: Find path of an application (From: Jean-Daniel Dupas <email@hidden>)
 >Re: Find path of an application (From: "Rakesh Singhal" <email@hidden>)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩人人澡狠狠躁视频| 欧美日韩在线不卡| 国内外成人免费激情在线视频网站 | 两个人的视频www国产精品| 欧美有码视频| 亚洲高清精品中出| 亚洲国产日韩欧美在线动漫| 欧美成ee人免费视频| 一区二区高清在线| 亚洲一区欧美二区| 国内视频一区| 亚洲精品免费电影| 国产精品一级二级三级| 久久综合色综合88| 欧美精品成人91久久久久久久| 亚洲视频香蕉人妖| 欧美伊人久久| 亚洲美女诱惑| 亚洲欧美综合v| 亚洲国产日韩精品| 亚洲性感美女99在线| 亚洲丶国产丶欧美一区二区三区| 欧美黄污视频| 国产美女精品一区二区三区| 欧美成人激情在线| 国产精品久久久久久妇女6080| 久久综合久久久久88| 欧美特黄一区| 麻豆9191精品国产| 国产精品久久久久久亚洲调教| 免费日韩av| 国产精品系列在线| 最新精品在线| 伊人精品在线| 午夜精品久久久久| 亚洲精品在线看| 久久国产手机看片| 亚洲一区影院| 欧美www视频| 久久视频一区二区| 国产精品久久久久9999高清| 欧美成人午夜激情视频| 国产精品一区二区三区免费观看| 欧美国产日产韩国视频| 国产午夜精品一区二区三区欧美| 亚洲精品一区二区在线观看| 136国产福利精品导航| 亚洲一区免费在线观看| 亚洲午夜电影在线观看| 欧美激情综合| 亚洲电影免费| 在线国产精品播放| 久久精品五月婷婷| 久久精品国内一区二区三区| 国产精品一二| 亚洲一区在线视频| 亚洲性视频网址| 欧美日韩精品在线| 亚洲精品视频免费在线观看| 亚洲乱码国产乱码精品精天堂| 久久亚洲综合色一区二区三区| 久久精品在线免费观看| 国产欧美欧美| 先锋影院在线亚洲| 欧美在线观看视频一区二区| 国产精品五月天| 亚洲欧美美女| 久久精品国产欧美激情| 国产一区久久| 久久久久国内| 亚洲国产成人av| 亚洲最快最全在线视频| 欧美久久久久久久久| 日韩午夜高潮| 亚洲在线网站| 欧美三级电影一区| 亚洲天堂偷拍| 久久―日本道色综合久久| 国产专区一区| 久久一区二区精品| 亚洲国产精品久久人人爱蜜臀 | 欧美国产亚洲视频| 亚洲欧洲一区二区三区| 一区二区高清在线| 欧美色图天堂网| 亚洲欧美日韩精品综合在线观看| 欧美在线视频网站| 影音先锋成人资源站| 欧美a级一区二区| 一本色道久久综合狠狠躁篇的优点 | 国产欧美精品在线播放| 久久精品日产第一区二区| 亚洲国产精品久久久久婷婷884 | 激情综合网激情| 欧美国产综合一区二区| 亚洲一区视频在线| 欧美h视频在线| 亚洲特色特黄| 在线电影院国产精品| 欧美精品日韩一区| 欧美中文日韩| 99国内精品久久| 另类专区欧美制服同性| 一本色道婷婷久久欧美| 国产一区二区主播在线| 欧美日韩极品在线观看一区| 欧美一级淫片播放口| 亚洲精品日韩精品| 久久中文精品| 欧美亚洲网站| 夜夜嗨一区二区三区| 合欧美一区二区三区| 欧美午夜在线一二页| 久久久综合视频| 亚洲欧美日产图| 亚洲美女黄色| 欧美激情bt| 蜜桃av噜噜一区二区三区| 欧美一区2区三区4区公司二百| 亚洲精品免费电影| 亚洲第一黄色| 国内在线观看一区二区三区 | 午夜精品久久久久久久| 亚洲精品在线电影| 欧美不卡福利| 久久午夜电影网| 香蕉精品999视频一区二区 | 国产精品日韩专区| 欧美精品九九| 欧美.com| 农村妇女精品| 麻豆成人综合网| 久久久久一区二区三区| 欧美一区二区三区免费视| 亚洲欧美日韩视频二区| 亚洲性感激情| 亚洲一区免费| 亚洲一区制服诱惑| 亚洲影院在线观看| 亚洲线精品一区二区三区八戒| 99视频精品免费观看| 日韩视频不卡中文| 一本一道久久综合狠狠老精东影业 | 欧美一区二区三区另类| 亚洲欧美激情四射在线日 | 国内外成人免费视频 | 免费日韩av片| 欧美成人资源网| 欧美成人一区在线| 欧美精品综合| 国产精品乱子乱xxxx| 国产欧美韩国高清| 国产综合色产在线精品| 国产综合av| 亚洲精品日日夜夜| 一区二区三区免费在线观看| 亚洲综合精品一区二区| 欧美伊人久久久久久午夜久久久久 | 亚洲伦理在线免费看| 在线一区观看| 性久久久久久久| 美国成人直播| 亚洲精品123区| 亚洲婷婷综合色高清在线| 欧美亚洲视频在线观看| 久久综合国产精品| 欧美日韩国产精品一卡| 国产麻豆91精品| 在线日韩一区二区| 亚洲天堂网在线观看| 久久国产精品久久久| 欧美岛国激情| 亚洲天天影视| 久色成人在线| 国产精品高清在线| 亚洲福利视频三区| 亚洲欧美国产一区二区三区| 可以看av的网站久久看| 99国产精品久久久久久久久久 | 久久久精品午夜少妇| 欧美激情二区三区| 国产香蕉久久精品综合网| 亚洲精品中文字幕有码专区| 小黄鸭精品密入口导航| 亚洲高清免费| 欧美一级在线视频| 欧美三级乱码| 亚洲第一在线综合网站| 亚欧美中日韩视频| 亚洲蜜桃精久久久久久久 | 亚洲国产一区二区三区在线播 | 美国十次了思思久久精品导航| 欧美日韩亚洲另类| 亚洲第一色中文字幕| 欧美一级夜夜爽| 亚洲日本中文字幕| 狼人社综合社区| 国内一区二区三区| 亚洲欧美日韩直播| 亚洲毛片在线看|