Tag: path

如何在Windows上使用C语言将AppPath发送到可执行文件的目录(使用MinGW gcc)

我的可执行文件位于此处 – > D:\ Examples \ C_Pro \ newApp.exe此外,“C_Pro”文件夹中还包含多个文件(file1.txt,file2.txt,file44.exe,newApp.c) 在我的newApp.c文件中,我包含一个ShellExecute函数来在这样的文件夹中执行“file44.exe”文件 – > ShellExecute(NULL,“open”,“D:\ Examples \ C_Pro \ file44.exe”,NULL ,NULL,1) 这样一切都正常工作.. 我在VB中谈论AppPath之类的东西 但是我想在不同的PC上运行这个newApp.exe所以我想用另一个pc中包含“newApp.exe”文件的路径替换“”D:\ Examples \ C_Pro \“这个。(比如C) :\软件\) 我使用GetModuleFileName函数获取路径但它包含newApp.exe部分我只希望新目录PathRemoveFileSpec函数不起作用。 还有GetModuleFileName的返回路径,如 – > D:\ Examples \ C_Pro \ newApp.exe,但是当我们将一些路径放入ShellEcxecute时,需要双重shalse(空格序列),如下所示 – > D:\ Examples \ C_Pro \ 我该如何摆脱这个问题。 实际代码snippt是这个…… int main() { ShellExecute(NULL,”open”,”D:\\Softwares\\TypingMaster700.exe”,NULL,NULL,SW_SHOWNORMAL); } 但我想这样做。 (这是虚拟的,这里“some_Funtion”表示用于解释目的的虚函数。 int main() […]

让编译器找到Cmake创建的文件

我正在使用Cmake中的configure_file命令进行function可用性检查,如本页所述 。 该页面建议使用如下命令: configure_file(config.h.in config.h) 这会将${CMAKE_CURRENT_SOURCE_DIR}/config.h.in为${CMAKE_CURRENT_BINARY_DIR}/config.h 。 但是当我编译程序时,编译器只在${CMAKE_CURRENT_SOURCE_DIR}查找标题(例如config.h ),而不是${CMAKE_CURRENT_BINARY_DIR} 。 很自然地,编译器找不到生成它的config.h ,并且构建失败。 解决此问题的标准方法是什么? 我应该更改CMakeLists.txt以便在源目录config.h创建config.h吗? 或者我应该更改它以将构建目录添加到包含路径? (实际上,为什么我必须手动处理这个问题?[半修辞问题]) 这个问题涉及类似的问题,但建议两种方案作为可能的解决方案; 我想知道是否有一个标准的做法,或者这是否表明我错过了一些关于如何使用Cmake的内容。

了解执行和设置环境变量的要求

我们在解释老师方面遇到了很多麻烦。 我们要求澄清并从他那里得到以下回复 对于execve,使用导出的变量向它发送一个环境,并创建一个内置命令来生成/ bin / bash的子shell,这样你就可以使用env查看导出的变量。 (他在谈论在这里创建我们自己的环境变量。) 是创建自己的。 您可以在shell启动时复制environ并仅添加导出的变量 这与我在Stack Overflow上的以下post有关(阅读这篇文章将帮助您理解我想要做的事情): 使用execve的新路径运行ls命令 我们对此非常困惑。 我将再一次解释我们现在要做的事情。 类似于Linux shell的工作方式,我们需要编写自己的程序,可以设置环境变量,如PATH和USER以及用户想要定义的其他任何变量。 你将如何调用它的一个例子是(在你的程序中提示): mysetenv dog spike 这将创建一个看起来像“dog = spike”的环境变量 更重要的是,我们需要能够设置自己的PATH变量并将其发送到exec命令。 这是令人困惑的部分,因为基于我们所有的问题,我们不明白我们应该做什么。

使用execve的新路径运行ls命令

我试图使用execve来运行ls命令。 目前我正在使用以下参数运行它: execve(args[0], args, env_args) //args looks like {“ls”, “-l”, “-a”, NULL} //env_args looks like {“PATH=/bin”, “USER=me”, NULL} 我期望这样做是使用我的新env_args运行ls命令,这意味着它将在我的PATH中查找ls。 但是,这段代码实际上没有做任何事情,当我运行代码时它只返回我的命令提示符而没有输出。 使用相同的args []我使用execvp并且工作并搜索我当前的路径。 你能告诉我我做错了什么吗? 我想要做的是编写我自己的shell程序,在那里我可以创建和导出我自己的环境,并让exec使用我在char **中定义的环境。 本质上我正在编写自己的函数来操作env_args来添加和删除变量,当我调用exec时我希望能够在{“ls”,“ – l”,NULL}上调用exec并让它看不起我的新环境名为ls的有效程序的路径变量。 我希望这能解释我做得更好。 在这种情况下,我不认为extern environ var对我有用。