加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

编写便携式c / c程序时,使用外部文件的最佳方法是什么?

发布时间:2020-12-16 09:35:41 所属栏目:百科 来源:网络整理
导读:我对c / c场景很陌生,我已经在虚拟机上用勺子喂了太长时间. 我正在修改我们在整个公司使用的现有C工具.该工具正在所有主要操作系统(Windows,Mac,Ubuntu,Solaris等)上使用.我正在尝试使用另一个编写Java的工具来桥接该工具.基本上我只需要从C工具调用java -ja
我对c / c场景很陌生,我已经在虚拟机上用勺子喂了太长时间.

我正在修改我们在整个公司使用的现有C工具.该工具正在所有主要操作系统(Windows,Mac,Ubuntu,Solaris等)上使用.我正在尝试使用另一个编写Java的工具来桥接该工具.基本上我只需要从C工具调用java -jar.

问题是,我怎么知道jar在用户计算机上的位置? c可执行文件当前被检入Perforce,用户同步然后调用exe,可能会将exe留在原位(尽管他们可以将其复制到其他地方).我当前的解决方案检查exe旁边的jar文件.

我已经看过多种方法来计算来自C的exe的位置,但它们似乎都不是可移植的.在Windows上有一个’GetModuleLocation’,在posix上你可以查看procs / process.exe信息来确定进程的位置.在大多数系统中,您可以查看argv [0]以确定exe的位置.但是由于用户使用$PATH,符号链接等来调用exe,因此大多数这些技术都是100%保证的.

那么,任何关于正确的方法的指导总能奏效吗?我想如果有多个解决方案我没有问题,但似乎应该有更优雅的方式来做到这一点.

解决方法

我不相信有这样做的便携方式. C标准本身没有定义任何有关执行环境的内容.你得到的最好的是std :: system调用,对于路径名中的Unicode字符这样的事情可能会失败.

这里的问题是C和C都用在没有操作系统之类的系统上.没有$PATH这样的东西.因此,标准委员会要求符合要求的实施提供这样的特征是没有意义的.

我只想为POSIX编写一个实现,一个用于Mac(如果它与POSIX显着不同…从未使用它,所以我不确定),一个用于Windows(在编译时使用预处理器选择哪一个) .它可能是每个函数调用3个;不是很多代码,你肯定会遵循目标平台的惯例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读