gpt4 book ai didi

c++ - 将参数传递给在 C++ 中不起作用的可执行文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:58 24 4
gpt4 key购买 nike

这是我拥有的“sleeper.exe”的源代码:

int main(int argc, char** argv) {
cout<<argv[1];
return 0;
}

当我像这样从命令行调用时:

C:\sleeper 5

我明白了

5

在命令行中,所以这工作正常..

现在我正尝试从其他一些 exe 调用此 exe,如下所示:

std::cout << "ret is:" << ret;
std::cout << "\n";

CreateProcess("sleeper.exe", // No module name (use command line)
ret, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi // Pointer to PROCESS_INFORMATION structure
)

这里 ret 也是 5,我敢肯定,因为我在命令行中看到它很好:

ret is: 5

在同一目录中有一个名为 config.mpap 的文件,我是这样从这里读取值的:

std::ifstream myReadFile;
myReadFile.open("config.mpap");

char output[400];
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
myReadFile >> output;
}
}
myReadFile.close();

char y = output[37];
int numberOfSleeps = y - '0'; // So now numberOfSleeps is 5

然后我将 numberOfSleeps 转换为 ret,如下所示:

char* ret = NULL;
int numChars = 0;
bool isNegative = false;
// Count how much space we will need for the string
int temp = sleepTime;
do {
numChars++;
temp /= 10;
} while (temp);
ret = new char[ numChars + 1 ];
ret[numChars] = 0;
if (isNegative) ret[0] = '-';
int i = numChars - 1;
do {
ret[i--] = sleepTime % 10 + '0';
sleepTime /= 10;
} while (sleepTime);

有人能帮我看看为什么 ret 没有从 createprocess.exe 传递给 sleeper.exe 吗?

编辑:

它是这样工作的:

if (!CreateProcess(NULL, // No module name (use command line)
"sleeper 5", // Command line

但是这甚至不能编译:

std::string sleeper("sleeper ");
sleeper += ret;
if (!CreateProcess(NULL, // No module name (use command line)
sleeper, // Command line

最佳答案

命令行(CreateProcess 的第二个参数)采用完整的命令行,包括可执行文件名称。如果第一个参数不为 NULL,则将其用作要运行的可执行文件,但命令行仍必须包含可执行文件名称。过去,即使在前面加上一个空格(给出一个空的可执行文件名称)也对我有用。

关于c++ - 将参数传递给在 C++ 中不起作用的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20179876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com