C++ 使用std::system启动进程时,我可以指定一个工作目录吗?
我想启动一个完整路径的可执行文件:C++ 使用std::system启动进程时,我可以指定一个工作目录吗?,c++,process,C++,Process,我想启动一个完整路径的可执行文件: std::system(“C:/binary.exe”) 有没有办法在这种情况下指定一个工作目录? 我不相信有一种可移植的方式来实现你想要的,至少它不是由我所能告诉的C++标准强制的。一般来说,如果您需要比system()提供的功能更多的功能,那么您应该去别处看看。在Linux和Unix系统上,这将是和函数。在窗户上 实现这一点的Linux方法的未经测试的代码是: #include <cstdio> #include <unistd.h>
std::system(“C:/binary.exe”)
有没有办法在这种情况下指定一个工作目录?
我不相信有一种可移植的方式来实现你想要的,至少它不是由我所能告诉的C++标准强制的。一般来说,如果您需要比system()
提供的功能更多的功能,那么您应该去别处看看。在Linux和Unix系统上,这将是和函数。在窗户上
实现这一点的Linux方法的未经测试的代码是:
#include <cstdio>
#include <unistd.h>
int
main()
{
const pid_t pid( fork() );
if ( !pid ) {
// child process
if ( chdir("/tmp") ) {
perror( "chdir" );
}
execl( "/binary", "binary", (char*)0 );
perror( "execl(\"/binary\")" );
_exit( 1 );
}
}
#包括
#包括
int
main()
{
常数pid_t pid(fork());
如果(!pid){
//子进程
if(chdir(“/tmp”)){
perror(“chdir”);
}
execl(“/binary”,“binary”,“char*)0);
perror(“execl(\”/binary\”);
_出口(1);
}
}
我不相信有一种可移植的方式来实现你想要的,至少它不是由我所能告诉的C++标准规定的。一般来说,如果您需要比system()
提供的功能更多的功能,那么您应该去别处看看。在Linux和Unix系统上,这将是和函数。在窗户上
实现这一点的Linux方法的未经测试的代码是:
#include <cstdio>
#include <unistd.h>
int
main()
{
const pid_t pid( fork() );
if ( !pid ) {
// child process
if ( chdir("/tmp") ) {
perror( "chdir" );
}
execl( "/binary", "binary", (char*)0 );
perror( "execl(\"/binary\")" );
_exit( 1 );
}
}
#包括
#包括
int
main()
{
常数pid_t pid(fork());
如果(!pid){
//子进程
if(chdir(“/tmp”)){
perror(“chdir”);
}
execl(“/binary”,“binary”,“char*)0);
perror(“execl(\”/binary\”);
_出口(1);
}
}