gpt4 book ai didi

c - 从 C 运行命令行

转载 作者:行者123 更新时间:2023-12-01 12:45:54 24 4
gpt4 key购买 nike

我正在运行 Windows 8,并且正在使用 cygwin 来编译我的代码。我正在尝试使用 system() 命令运行命令行命令。这看起来应该很简单,但令人惊讶的是我无法打开任何东西。下面是我的代码:

#include <stdio.h>
#include <string.h>

int main ()
{
char command[50];
int error = 0;

strcpy( command, "cd c:/");
error = system(command);
printf("%s\n", command);
printf("%d\n", error);
while(1)
{
;
}

return(0);
}

然而,上面的程序只是返回变量error为“127”,变量command为“cd c:/”。一些 google 搜索退出代码显示这意味着“127”表示未找到该命令。我完全迷路了。我搜索了一段时间,但我只能找到与 C# 有关的问题。如何从 C 程序运行命令行命令?

编辑:我尝试从 cygwin 命令行运行该程序,它运行良好。它只是从正常的 cmd.exe 运行不正确,当我双击 .exe 文件时。

最佳答案

在 Windows 下,'cd' 是 shell 中的内置命令。您需要运行一个 shell 来执行它。请查看this answer也是。

编辑:您可以使用系统命令来运行这样的 shell:

system("<fullpath to cmd.exe>\\cmd.exe /c \"your command here\"");

除非您在/c 之后运行单个可执行文件,否则转义引号会变得非常棘手。如果您的可执行文件或内部 shell 命令需要参数,您可能需要对引号进行两次和三次转义。对于一些特殊字符,如 | &&(管道)>(重定向)您需要使用 Microsoft 为此目的添加的特殊窗口 ^ 转义字符。

这是一个这样的命令的例子。这个在一小段延迟后重新启动 Windows:

system("cmd.exe /c \"start /b shutdown -t 1 -r\"");

这是一个更复杂的特殊转义:

system("cmd.exe /c \"ipconfig ^| find \"IPv4\" ^> C:\Users\someUser\a.txt ^&^& for /f \"tokens=13 delims=: \" %%i in (C:\Users\someUser\a.txt) do echo %%i ^> C:\Users\someUser\ip.txt ^&^& del C:\Users\someUser\a.txt\"");

最后一个只使用简单的命令获取机器的 ip,并以迂回的方式保存到名为“someUser”的用户的主目录下的 ip.txt。注意 ^ 转义。

关于c - 从 C 运行命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25830799/

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