Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-获取.C文件的路径_C_Path_Relative Path - Fatal编程技术网

C-获取.C文件的路径

C-获取.C文件的路径,c,path,relative-path,C,Path,Relative Path,我有以下.c文件: /home/eamorr/project1/eamorr.c 我编译fine,其exe位于: /home/eamorr/project1/a.out <?php $cmd=__DIR__."../../../a.out"; $result=`$cmd`; ?> 现在,我在以下位置有一个php文件: /home/eamorr/project1/a/b/c/eamorr.php 它需要调用a.out <?php $cmd=__DIR__."../../../a

我有以下.c文件:

/home/eamorr/project1/eamorr.c

我编译fine,其exe位于:

/home/eamorr/project1/a.out

<?php
$cmd=__DIR__."../../../a.out";
$result=`$cmd`;
?>
现在,我在以下位置有一个php文件:

/home/eamorr/project1/a/b/c/eamorr.php

它需要调用
a.out

<?php
$cmd=__DIR__."../../../a.out";
$result=`$cmd`;
?>
不幸的是,pwd变量包含错误的路径

/home/eamorr/project1/a.out/doMagic.sh


我该如何摆脱路径中的a.out位?我不经常用C编程,我已经做了一个多小时了…

如果我理解正确,您希望得到的是:

/home/eamorr/project1/doMagic.sh

首先,我通常不会在C中进行这种路径处理。不过,我快速查看了一下,似乎可以使用
dirname()
功能。看看这里。请注意这一点,因为我认为这些都是Linux的东西,不确定在DOS中如何操作。

是的,但是
dirname
a.out
exe的路径还是调用.php文件的路径?我弄不明白……我怀疑在DOS中如何做与此无关,因为现在还没有人使用DOS,尤其是@Eamorr几乎肯定没有在DOS上运行PHP。@Andres-
dirname()
工作得很好!非常感谢你!我确实试过
basename()
。。。那没用。但是dirname()确实如此……正如我所说的,如果您想要的是
/home/eamorr/project1/doMagic.sh
,那么我会想象您会这样做:
realpath(argv[0],pwd);myPath=dirname(pwd)
@immibis这个问题确实表明该程序运行在Linux(或其他基于unix的系统)上,但我认为指出这个解决方案可能无法在Windows机器上运行是很重要的。但是,我绝对不是Windows用户,所以我没有线索。你可以考虑在调用程序之前从PHP中做一个CHDIR,并且完全避免所有的目录欺骗。我使用C的原因是因为我需要一个Web用户能够执行一个特权程序。是的,我知道。。。用户经过身份验证,并且用户被限制在IP范围内。我没有说不要使用C程序。您可以在执行C程序之前执行
chdir()
,然后调用
/doMagic.sh
,而不是尝试使用完整路径作为前缀。