如何在fork()之后将命令行parameter passing给subprocess

我有以下代码草稿。

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

如何将命令行parameter passing给subprocess? 例如,我想运行./app alch.txt

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

生产

 cat `tail -f alch.txt` 

在tmp。

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

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

对不起,它确实工作正常。 我以前的版本由于某种原因没有工作,但显然我已经改变了一些东西,使其正确。 下次在问题之前运行我的代码。