补全createProcess函数,使用system函数创建一个名为testDir的目录(** 调用成功返回命令的状态码,失败返回-1**)。#include <stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> /************************ * 返回值: 调用成功返回命令的状态码,失败返回-1 *************************/ int createProcess() { int ret = -1; /********** BEGIN **********/ /********** END **********/ return ret; }
时间: 2025-05-24 10:02:33 浏览: 19
### 如何在C语言中使用 `system` 函数创建目录并实现 `CreateProcess` 返回状态码
#### 使用 `system` 创建目录
在 C 语言中,可以通过调用标准库中的 `system()` 函数来执行操作系统级命令。为了创建一个名为 `testDir` 的目录,可以利用 `mkdir` 命令(适用于 Unix/Linux 系统)或者 `md` 命令(适用于 Windows 系统)。以下是具体代码示例:
```c
#include <stdlib.h>
#include <stdio.h>
int main() {
int result = system("mkdir testDir"); // 对于 Windows 可以替换为 "md testDir"
if (result == 0) {
printf("Directory 'testDir' created successfully.\n");
} else {
printf("Failed to create directory 'testDir'.\n");
}
return 0;
}
```
上述代码通过 `system()` 调用了外部命令 `mkdir testDir` 或者 `md testDir` 来创建目标目录,并检查返回值判断操作是否成功[^1]。
---
#### 实现 `CreateProcess` 并获取其返回状态码
`CreateProcess` 是 Windows API 中用于创建新进程的一个重要函数。它可以用来启动新的应用程序或脚本,并提供丰富的选项配置子进程的行为。以下是如何正确实现 `CreateProcess` 并捕获其返回状态码的示例代码:
```c
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
void CreateAndCheckProcess(const TCHAR* appName, const TCHAR* cmdLine) {
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
BOOL success = CreateProcess(appName, // 应用程序名称
(TCHAR*)cmdLine, // 命令行参数
NULL, // 进程安全属性
NULL, // 主线程安全属性
FALSE, // 不继承句柄
CREATE_NO_WINDOW, // 创建无窗口模式
NULL, // 使用父进程环境块
NULL, // 当前工作目录
&si, // 启动信息结构体
&pi // 存储进程信息
);
if (!success) {
_tprintf(_T("Failed to create process! Error code: %d\n"), GetLastError());
return;
}
WaitForSingleObject(pi.hProcess, INFINITE); // 等待进程结束
DWORD exitCode;
GetExitCodeProcess(pi.hProcess, &exitCode); // 获取退出代码
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
_tprintf(_T("Process exited with code: %lu\n"), exitCode);
}
int main() {
CreateAndCheckProcess(NULL, TEXT("calc")); // 示例:启动计算器应用
return 0;
}
```
在此代码片段中,`CreateProcess` 成功后会等待子进程完成并通过 `GetExitCodeProcess` 提取最终的状态码。这有助于了解子进程的实际运行情况以及可能发生的异常[^2][^4]。
---
#### 综合说明
- **`system` 函数**适合快速执行简单的系统指令,但它依赖于宿主系统的 shell 解析器,灵活性较低。
- **`CreateProcess` 函数**提供了更精细的控制能力,能够自定义子进程的工作方式及其资源分配策略。然而,由于涉及较多参数设置,其实现相对复杂一些。
两者各有优劣,应根据实际需求选择合适的方法。
---
###
阅读全文
相关推荐


















