linux C语言 exec函数的相关问题

大家好,我想问一个问题,execl("/home/xxx/Elevator/floor_three","floor_three",NULL)==-1)能不能用一个宏定义#... 大家好,我想问一个问题,
execl("/home/xxx/Elevator/floor_three","floor_three",NULL)==-1)
能不能用一个宏定义
#define FILEPATH $(HOME)/Elevator/floor_three
进行替换,我知道在引号中是不能进行宏替换的,有没有其它办法呢?
或者不用宏替换,仅仅把/home/xxx/替换成$(HOME)也行,即实现可移植性
展开
 我来答
一路清晨503
2013-11-19 · TA获得超过228个赞
知道小有建树答主
回答量:413
采纳率:100%
帮助的人:253万
展开全部
直接把宏定义成字符串啊,就可以了
#define FILEPATHA $(HOME)/

#define FILEPATHB “Elevator/floor_three”

char* FILEPATH=NULL;
FILEPATH=(char*)malloc(30);
memcpy(FILEPATH,A,strlen(A));//拼接字符串
strcat(FILEPATH,B);
追问
您好,首先谢谢您的关注,你提供了一个很好的思路,但我感觉还有点问题,希望您能再解释下如何在exec函数族中如何使用……
追答
FILEPATH这个字符串拼接好了,你直接用就是了

execl(FILEPATH,"floor_three",NULL)==-1)//第一个参数是一个字符串地址参变量,写个地址就OK了

如果要在别处使用更改了路径,只要更改FILEPATHA就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qmg1023
2013-11-19 · TA获得超过888个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:903万
展开全部
能不能把命令写成 ~/Elevator/floor_three

~ 代表登录用户的HOME
追问
您好,首先谢谢您的关注,但是当我替换成~时会提示目录错误,估计也是引号的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqpcy
2013-11-19 · TA获得超过658个赞
知道小有建树答主
回答量:746
采纳率:66%
帮助的人:362万
展开全部
你在宏定义时加“”不符合要求吗
#define FILEPATH "$(HOME)/Elevator/floor_three"
更多追问追答
追问
您好,首先谢谢您的关注,我是想这样的,但因为在引号中,这个宏定义不起作用……
追答
你说的在引号中不起作用,是宏定义报错,还是你使用出错?
类似以下这样,不会出错的吧,本身就是个替换而已
#define FILEPATH "/home/xxx/Elevator/floor_three"
execl(FILEPATH,"floor_three",NULL)==-1)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式