exec*POSIX函数中的管道

exec*POSIX函数中的管道,c,linux,pipe,exec,posix,C,Linux,Pipe,Exec,Posix,如何转换: system("ps -el | grep fork") execlp函数的参数 我试过: execlp("ps", "ps", "-el", "|", "grep", "fork", (char*)0) 以及: 但两者都不起作用。它是否可行?管道不是POSIX系统上的自动功能,您必须自己实现它 为此,您有和系统调用 该函数创建一对文件描述符,一个用于写入,另一个用于读取。函数“分叉”一个新的进程 诀窍是使用pipe函数创建一个管道,并创建一个子进程。然后,父进程可以使用管道的写

如何转换:

system("ps -el | grep fork")
execlp
函数的参数

我试过:

execlp("ps", "ps", "-el", "|", "grep", "fork", (char*)0)
以及:


但两者都不起作用。它是否可行?

管道不是POSIX系统上的自动功能,您必须自己实现它

为此,您有和系统调用

该函数创建一对文件描述符,一个用于写入,另一个用于读取。函数“分叉”一个新的进程

诀窍是使用
pipe
函数创建一个管道,并创建一个子进程。然后,父进程可以使用管道的写入文件描述符映射到进程的标准输出(通常使用函数完成)。然后,父进程执行管道的第一个(左侧)命令

子进程获取管道的读取描述符,并将其映射到标准输入,类似地,将
exec
映射到管道另一个(右侧)的命令

这将导致从第一个命令到标准输出的所有输出通过管道传输到第二个命令的标准输入


互联网上有很多教程和示例,介绍如何切实做到这一点。

谢谢,我将进行一些搜索并尝试。
execlp("ps", "ps", "-el", "grep", "fork1", (char*)0)