如何在 fork() 之后将命令行参数传递给子进程

Posted

技术标签:

【中文标题】如何在 fork() 之后将命令行参数传递给子进程【英文标题】:how to pass command line arguments to a child process after fork() 【发布时间】:2011-12-13 14:53:00 【问题描述】:

我有以下代码草稿。

#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>    

int main(int argc, char *argv[])


    printf( "usage: %i filename", argc );

    pid_t pID = fork();
    if (pID == 0)                // child
    
        // Code only executed by child process
        printf("Child PID: %i", pID);

        int file = open("/tmp/rtail", O_CREAT | O_WRONLY);

        //Now we redirect standard output to the file using dup2
        dup2(file,1);

        char tmp[30];
        sprintf(tmp, "cat `tail -f %s`", argv[1]);
    
    else if (pID < 0)            // failed to fork
    
        printf("Failed to fork");
        exit(1);
        // Throw exception
    
    else                                   // parent
    

    

    // Code executed by both parent and child.  

    return 0;

如何将命令行参数传递给子进程?比如运行./app alch.txt我要

sprintf(tmp, "cat `tail -f %s`", argv[1]);

生产

cat `tail -f alch.txt`

在 tmp 中。

【问题讨论】:

一模一样?你的代码很好。你到底遇到了什么问题? 【参考方案1】:

如何将命令行参数传递给子进程?

你不需要做任何特别的事情; fork 确保每个进程获取所有局部变量,包括argv

【讨论】:

【参考方案2】:

抱歉,它确实工作正常。我的早期版本由于某种原因无法正常工作,但显然我已经更改了一些内容以使其正确。下次提问前会运行我的代码。

【讨论】:

以上是关于如何在 fork() 之后将命令行参数传递给子进程的主要内容,如果未能解决你的问题,请参考以下文章

如何将命令行参数传递给 unix/linux 系统上正在运行的进程?

将 unicode 参数传递给 ShellExecuteEx 中的子进程

如何将命令行参数传递给 WinForms 应用程序?

在 Eclipse(Pydev) 中将命令行参数传递给 Python 脚本

使用 Python 将包含双引号的参数传递给子进程

如何将命令行参数传递给构建的 Mix Release