新手求助:如何用fork创建进程打印argv副本并完成相关测试?
实现代码及验证说明
需求明确
- 调用
fork()创建子进程 - 子进程打印自身的
argv参数列表 - 父进程打印自身的
argv参数列表 - 运行程序时将输出重定向至临时文件
- 检查临时文件中父子进程的参数集合是否一致
- 父进程必须等待子进程结束后再终止
完整实现代码
#include <stdio.h> #include <unistd.h> #include <sys/wait.h> #include <stdlib.h> int printList(char **someList) { int index = 0; while (someList[index] != NULL) { printf("%s ", someList[index]); index++; } printf("\n"); return index; } int main(int argc, char **argv, char **envp) { pid_t pid = fork(); if (pid == -1) { perror("fork失败"); exit(EXIT_FAILURE); } else if (pid == 0) { printf("子进程argv:"); printList(argv); exit(EXIT_SUCCESS); } else { waitpid(pid, NULL, 0); printf("父进程argv:"); printList(argv); } return 0; }
运行与验证步骤
- 编译代码:在终端执行编译命令
gcc -o argv_test argv_test.c - 运行并重定向输出:带参数运行程序,将输出写入临时文件
./argv_test 测试参数1 测试参数2 > temp_output.txt - 查看输出文件:打开临时文件对比父子进程的参数列表
正常输出示例:cat temp_output.txt
可见两者的参数集合完全一致。子进程argv:./argv_test 测试参数1 测试参数2 父进程argv:./argv_test 测试参数1 测试参数2
内容的提问来源于stack exchange,提问作者CSED
相关产品推荐
相关产品推荐

