ls | Comando wc: Usando ls|wc, podemos contar nuevas líneas, palabras y letras de todos los archivos del directorio actual. Podemos ver de lo siguiente después de la ejecución del código que obtenemos los mismos resultados.
Requisitos previos: comando ls | comando wc | tubería en linux
Enfoque: primero, tenemos que usar tuberías para la comunicación entre procesos en una array donde se usa a[0] para leer y a[1] para escribir. Podemos replicar el proceso usando fork. En el proceso principal, la salida estándar se cierra para que la salida del comando ls vaya a a[0] y, de manera similar, la entrada estándar se cierra en el proceso secundario. Ahora, si ejecutamos el programa, la salida será la misma que el comando de linux ls|wc.
A continuación se muestra la implementación del enfoque anterior:
// C code to implement ls | wc command #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include<errno.h> #include<sys/wait.h> #include <unistd.h> int main(){ // array of 2 size a[0] is for // reading and a[1] is for // writing over a pipe int a[2]; // using pipe for inter // process communication pipe(a); if(!fork()) { // closing normal stdout close(1); // making stdout same as a[1] dup(a[1]); // closing reading part of pipe // we don't need of it at this time close(a[0]); // executing ls execlp("ls","ls",NULL); } else { // closing normal stdin close(0); // making stdin same as a[0] dup(a[0]); // closing writing part in parent, // we don't need of it at this time close(a[1]); // executing wc execlp("wc","wc",NULL); } }
Publicación traducida automáticamente
Artículo escrito por bhonesh chawla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA