You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:如何用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;
}

运行与验证步骤

  1. 编译代码:在终端执行编译命令
    gcc -o argv_test argv_test.c
    
  2. 运行并重定向输出:带参数运行程序,将输出写入临时文件
    ./argv_test 测试参数1 测试参数2 > temp_output.txt
    
  3. 查看输出文件:打开临时文件对比父子进程的参数列表
    cat temp_output.txt
    
    正常输出示例:
    子进程argv:./argv_test 测试参数1 测试参数2 
    父进程argv:./argv_test 测试参数1 测试参数2 
    
    可见两者的参数集合完全一致。

内容的提问来源于stack exchange,提问作者CSED

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:55:23