【发布时间】:2010-04-25 17:57:43
【问题描述】:
我正在尝试在 Win32 C 程序中执行 MS-DOS DEL 命令,并且我已经知道 system 和 popen 可以用于此目的。但是,问题在于命令都需要字符串文字(类型const char),而我需要类似于此 Perl 代码的 DOS 等价物(或多或少,不知道它是否真的有效):
my $user = $ENV{'USERNAME'};
my $directory = $ENV{'HOME'};
my $files = system("dir " . $directory);
my $pattern = "s/(\d{7,8})|(\"" . $user . "\")/";
$files ~= $pattern;
system("rm " . $files);
显然必须为rm 命令使用字符串文字。 C 中是否还有其他一些子进程函数允许将 char 数组作为进程名称的参数?
【问题讨论】:
-
为什么不能将该序列用作字符串文字很明显?
-
因为 system() 和 popen() 函数将该参数指定为“const char”类型。
-
字符串文字对于大多数实际用途来说是一个 const char * ,如果你有一个字符串,在 C 中它只是一个指向 char 序列的指针,以一个 nul 字节终止,你可以传递它弹出/系统,。
-
哦,我的错。问题中有错字,但现在已编辑。