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

发布于 2024-12-11 05:40:34 字数 1096 浏览 0 评论 0原文

我有以下代码草案。

#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]);

在 tmp 中生成

cat `tail -f alch.txt`

I have the following code draft.

#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;
}

How do I pass command line arguments to a child process? For example, running ./app alch.txt I want

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

to produce

cat `tail -f alch.txt`

in tmp.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

↙厌世 2024-12-18 05:40:35

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

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

How do I pass command line arguments to a child process?

You don't need to do anything special; fork ensures that each process gets all local variables, including argv.

贪恋 2024-12-18 05:40:35

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

Sorry for the trouble, it indeed works fine. My earlier version didn't work for some reason, but apparently I've changed something to make it right. Will run my code before a question next time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文